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...