多執行緒併發快速處理資料

2022-09-16 18:00:28 字數 2339 閱讀 8134

import j**a.util.arraylist;

import j**a.util.list;

import j**a.util.concurrent.callable;

import j**a.util.concurrent.executionexception;

import j**a.util.concurrent.executorservice;

import j**a.util.concurrent.executors;

import j**a.util.concurrent.future;

public class largsumwithcallable

int len=list.size()/threadcounts;//平均分割list  

//list中的數量沒有執行緒數多(很少存在)  

if(len==0)  

for(int i=0;isublist;  

if(i==threadcounts-1)else  

//採用匿名內部類實現  

calllist.add(new callable()  

system.out.println("分配給執行緒:"+thread.currentthread().getname()+"那一部分list的整數和為:\tsubsum:"+subsum);  

return subsum;  

}  });  

}  list> futurelist=exec.invokeall(calllist);  

for(futurefuture:futurelist)  

exec.shutdown();  

system.out.println(sum);}}

import j**a.util.arraylist;

import j**a.util.list;

import j**a.util.concurrent.brokenbarrierexception;

import j**a.util.concurrent.cyclicbarrier;

import j**a.util.concurrent.executorservice;

import j**a.util.concurrent.executors;

public class largelistintegersum  

/**

* 獲取list中所有整數的和

* @return

*/  

public long getintegersum()  

barrier=new cyclicbarrier(threadcounts+1);  

for(int i=0;ilist.size()?list.size():len*(i+1))));  

}  }  

try catch (interruptedexception e) catch (brokenbarrierexception e)  

exec.shutdown();  

return sum;  

}  /**

* 分割計算list整數和的執行緒任務

* */  

public class subintegersumtask implements runnable  

public void run()     

synchronized(largelistintegersum.this)  

try catch (interruptedexception e) catch (brokenbarrierexception e)  

system.out.println("分配給執行緒:"+thread.currentthread().getname()+"那一部分list的整數和為:\tsubsum:"+subsum);  

}  }  

public static void main(string args)  

long start=  system.currenttimemillis();

largelistintegersum countlistintegersum=new largelistintegersum(list,threadcounts);

long sum=countlistintegersum.getintegersum();          

system.out.println("list中所有整數的和為:"+sum);

long end=  system.currenttimemillis();     

system.out.println(end-start);  

}  }

多執行緒併發處理資料的問題

在現在的專案中遇到的乙個問題。我所做的簡訊平台,原來只是單執行緒傳送簡訊的,但是由於公司的應用範圍的擴大,簡訊的傳送量成倍的增多,一批插入的簡訊量達到5w資料,如果按照以前的方式,傳送過程十分緩慢。因為我們所用的第三方簡訊提供商只提供給我們10個併發的限制,所以我們採用10條執行緒進行讀取。一次發1...

多執行緒併發

多執行緒併發主要有3個方面 1 同步器 主要有synchronized,reentrantlock 訊號量,門栓 countdownlatch 障柵 cyclicbarrier 交換器。2 同步容器 主要包括 對映 集 佇列 對映 concurrenthashmap,concurrentskipli...

多執行緒併發

更簡單的執行緒池 多執行緒和多程序都可以很容易的實現併發,協程通過切換上下文來充分利用cpu實現併發效果 threading模組 thread類的基本狀態和行為 屬性名和值 name none,group none,target none,args kwargs daemon none 方法 sta...