使用多執行緒優化複雜邏輯以及資料量多處理

2022-03-01 07:08:17 字數 1599 閱讀 6507

在做乙個資料分析的乙個專案 有大量的資料分析處理,邏輯複雜,導致響應速度很慢。3分鐘。。。。。。這怎麼可能容忍話不多說,多執行緒搞起(這裡就不說多執行緒優缺點,只是記錄一下下次使用方便)

一開始我使用的 三個執行緒**如下

latch = new countdownlatch(3);

long starttime =system.currenttimemillis();

list

demandinputdtopageinfo =listdetaildatabydate(conditionvo);

class headin implements

runnable );

latch.countdown();}}

class allin implements

runnable );

latch.countdown();}}

class headnotin implements

runnable );

latch.countdown();}}

thread mythread1 = new thread(new

headin());

mythread1.start();

thread mythread2 = new thread(new

allin());

mythread2.start();

thread mythread3 = new thread(new

headnotin());

mythread3.start();

latch.await();

//等待執行緒結束後執行最後邏輯

於是就有下面的東西

class task implements callable>

@override

public listcall() throws

exception

//返回處理結果

return

retlist;}}

list

list = new arraylist(10000);

int index = 0;

executorservice ex = executors.newfixedthreadpool(5);

int dealsize = 2000;

list

>> futures = new arraylist<>(5);

//分配

for (int i = 0; i <= 5; i++, index +=dealsize)

int end = start +dealsize;

end = end > list.size() ?list.size() : end;

futures.add(ex.submit(

newtask(list, start, end)));

}try }

catch

(exception e)

結果是很明顯的 3秒  恩。。。這個還是可以接受,其他在硬體上優化  就是多執行緒分批跑資料 最後合併 在處理的過程。   記錄的有些粗糙  不巧看到這篇貼子大神 勿噴。多謝

android 中的多執行緒使用邏輯

android 使用主線程模型,為了使使用者體驗良好,耗時操作需要使用多執行緒來完成。那麼使用多執行緒的一般邏輯是什麼呢?在耗時的3個大戶是。1.本地io操作。包括讀寫資料庫,讀寫xml等本地檔案。2.網路io操作。3.ui 框架的 measure layout draw 流程。其中3 是主線程中要...

多執行緒修改資料的邏輯問題

在實際開發過程中,不得已的情況下需要去更新資料庫某個或多個字段,假如需要更新的字段目標值是乙個固定值,那麼用update語句就可以實現,資料量比較大的情況下,一般也不會有問題。如果說需要更新的字段目標值是需要依賴同一條記錄其他欄位做一定計算的結果,這時可以選擇使用sql,也可使用 去實現。再如果說這...

使用多執行緒爬取資料

應用名稱 應用鏈結 import requests import time from multiprocessing import queue from threading import thread import json import urllib.parse class xiaomispide...