1. 程式人生 > >JAVA動態開啟多個執行緒

JAVA動態開啟多個執行緒

 //多執行緒儲存線上資料
 public boolean invokeThreadMethod(List list){
  int num = 1000;   //定 義每個執行緒執行的資料量
  List thdList = null;
  Thread thread = null;
  boolean flag = false;  
  
  //根據資料量確定開多少個執行緒  
  int temp = list.size()/num;
  int begin = 0;
  int end = 0;
  
  //判斷資料量是否小於num
  if(temp == 0){
   thread = new Thread(new MyThread(list));
   MyThread.threadList.add(thread);
   thread.start();
  }
  
  //根據資料量動態開啟多執行緒
  for(int i=0;i<temp;i++){
   begin = i*num;
   
   if(i == (temp-1)){
    end = list.size();
   }else{
    end = i*num+num;
   }
   thdList = new ArrayList();
   for(int j=begin;j<end;j++){
    thdList.add((Httz)list.get(j));
   }
   thread = new Thread(new MyThread(thdList));
   MyThread.threadList.add(thread);
   thread.start();
  }
  
  //判斷所有執行緒是否都執行完畢
  while (true) {
   List<Thread> threadList = MyThread.threadList;
   for(int i=0;i<threadList.size();i++){
    if(!((Thread)threadList.get(i)).isAlive()){
     threadList.remove(i);
    }
   }   
   
   if(threadList.size()==0){
    flag = true;
    break;
   }
  }  
  return flag;
 }

相關推薦

JAVA動態開啟執行

 //多執行緒儲存線上資料  public boolean invokeThreadMethod(List list){   int num = 1000;   //定 義每個執行緒執行的資料量   List thdList = null;   Thread thread

java開啟執行執行完成後再執行執行

博主昨天去一家公司面試,被面試官問到一個問題,如果開啟10個執行緒,但是需要這10個執行緒都執行完成後,再交由主執行緒統一輸入,如何實現?當時我沒有回答,我對多執行緒並不是那麼的熟悉,面試結束後,我通過查閱資料找到了解決方案,下面我貼出程式碼: i

java中,執行同時呼叫同一個靜態方法的問題

我的原來程式是這樣設計的,對於一些常用的方法,都用靜態方法來實現,在多執行緒程式中直接呼叫,靜態方法由於沒有使用靜態變數,所以沒有進行執行緒同步。 類似以下程式: class ThreadI { public static void main(String[] arg) {

java同時啟動執行

package test; /**  * 啟動多個執行緒,這裡以100為例  * @author XYQ  *  */ public class TestThread {  public static

java併發】執行間共享資料

先看一個多執行緒間共享資料的問題: 設計四個執行緒,其中兩個執行緒每次對data增加1,另外兩個執行緒每次對data減少1。   從問題來看,很明顯涉及到了執行緒間通資料的共享,四個執行

java併發程式設計執行為什麼執行的先後順序不一樣!

jvm為了使得處理器內部的運算單元能儘量被充分利用, 處理器可能會對輸入程式碼進行亂序執行(Out-Of-Order Execution)優化,處理器會在計算之後將亂序執行的結果重組,保證該結果與順序執行的結果是一致的,但並不保證程式中各個語句計算的先後順序與輸入程式碼中的

python中執行開啟的兩種方式(內含有event的應用,即安全的機制,類似於java的等待喚醒機制,不會出現執行之間的錯亂問題)

 event是類似於java中的等待喚醒機制,具體方法參照上一篇CSDN 下面來介紹開啟執行緒的第一種方式 #Filename:threading1.py #開啟執行緒的第一種方式 import threading import time event=threadin

java併發程式設計之使用 CountDownLatch 控制執行執行順序

有時候會有這樣的需求,多個執行緒同時工作,然後其中幾個可以隨意併發執行,但有一個執行緒需要等其他執行緒工作結束後,才能開始。舉個例子,開啟多個執行緒分塊下載一個大檔案,每個執行緒只下載固定的一截,最後由另外一個執行緒來拼接所有的分段,那麼這時候我們可以考慮使用CountDownLatch來控制併發。

Java執行-併發之如何制定執行執行順序?

文章目錄 如何讓10個執行緒按照順序列印0123456789? 程式碼如下: 1.建立一個鎖物件類 2.建立一個執行緒類 3.測試類 如何讓10個執行緒按照順序列印012

java實現執行達到一個闕伐值後一起執行

給大家推薦個靠譜的公眾號程式設計師探索之路,大家一起加油 1. CountDownLatch 1.1 簡介 CountDownLatch是一個同步輔助類,通過它可以完成類似於阻塞當前執行緒的功能,即:一個執行緒或多個執行緒一直等待,直到其他執行緒執行的操作完成。CountDownLatch用

java併發程式設計(二)執行

多個執行緒多個鎖 多個執行緒多個鎖:多個執行緒,每個執行緒都可以拿到自己制定的鎖,分別獲得鎖之後,執行synchronized方法體的內容。就是在上次那個部落格上說道的鎖競爭的問題,是因為所有的執行緒過來以後都爭搶同一個鎖。如果說每個執行緒都可以或得到自己的鎖,這樣的話我們的鎖競爭問題就沒有了

Java實現執行之間的管理 --- CountDownLatch

wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------

java併發-執行執行之間共享資料(6)

多執行緒共享資料的方式: 1,如果每個執行緒執行的程式碼相同,可以使用同一個Runnable物件,這個Runnable物件中有那個共享資料,例如,賣票系統就可以這麼做。 2,如果每個執行緒執行的程式碼不同,這時候需要用不同的Runnable物件,例如,設計4個執行緒

[轉]Java 如何同步順序執行執行

轉載:http://hi.baidu.com/tianyadoudou/item/4deeb71dd6fbe7e55f53b18c 也許有人會問 “既然用了多執行緒,為什麼還要同步?還要順序執行呢?”。這個看似腦殘的問題其實並非我們想象的那麼簡單。     假設(

如何判斷開啟執行執行結束了?

class TaskTest { private Logger log = LoggerFactory.getLogger(getClass().getSimpleName()); private ExecutorService threadPool = Executors.newSc

Java執行執行訪問共享物件和資料的方式

1.如果每個執行緒執行的程式碼相同,可以使用同一個Runable物件,這個Runable物件中有那個共享資料,例如賣票系統就可以這樣做。 package javaplay.test; public class MulteThreadShareData { publi

Java執行與併發應用-(6)-執行之間共享物件和資料的方式

此內容來自張孝祥老師的java多執行緒與併發庫高階應用 如果多個執行緒執行的程式碼相同,可以使用同一個Runnable物件,這個Runnable物件中有那個共享資料。 如果多個執行緒執行的程式碼不同,這時候需要用不同的Runnable物件。將共享物件封裝在另一個物件中,然後

Java嚴格控制2執行的交替執行次數

以下程式碼可以實現兩個執行緒(A和B)任意次數的交替執行,比如,A執行緒執行m次,B執行緒執行n次,A執行緒又執行m次,B執行緒又執行n次…如此交替迴圈。 首先定義一個鎖類,該類的作用是充當執行緒之間的通訊角色,並定義各個執行緒的執行次數,同時還包含了執行緒的主體執行方法,程式碼如下:

c/c++ 執行 執行等待同一個執行的一次性事件

多執行緒 多個執行緒等待一個執行緒的一次性事件 背景:從多個執行緒訪問同一個std::future,也就是多個執行緒都在等待同一個執行緒的結果,這時怎麼處理。 辦法:由於std::future只能被呼叫一次get方法,也就是隻能被某一個執行緒等待(同步)一次,不支援被多個執行緒等待。所以std::shar

每天一例執行[day2]-----synchronized與執行

package com.jeff.base.sync002; /** * 多個執行緒多個鎖 * * 關鍵字synchronized取得的鎖都是物件鎖,而不是把一段程式碼(方法)當做鎖, * 所以程式碼中哪個執行緒先執行syn