日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
多線程的批量線程同步解決方案

多線程運(yùn)行時(shí)有待處理線程?試試看下面介紹的這個(gè)批量線程同步方法吧。

我們一直強(qiáng)調(diào)網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作對(duì)于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對(duì)待,選擇一個(gè)安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)站設(shè)計(jì)公司不一定是大公司,成都創(chuàng)新互聯(lián)作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。

在一批線程處理程序中,有時(shí)必須等到所有線程全部運(yùn)行完后,才能進(jìn)行下一步任務(wù)處理, 可以采用如下方法解決,創(chuàng)建一個(gè)鎖對(duì)象 ,該鎖對(duì)象提供一個(gè)當(dāng)前線程等待其他線程的方法。見代碼:

 
 
 
  1. /**  
  2.  *   
  3.  * 此類主要用來處理線程的同步屏蔽模型,比如,一批線程運(yùn)行,必須在最后一個(gè)線程運(yùn)行  
  4.  * 完后,才能進(jìn)行下一步的操作,那么就可以創(chuàng)建一個(gè)鎖對(duì)象,鎖對(duì)象提供一個(gè)線程等待其他線程  
  5.  * 的方法,如果當(dāng)前線程運(yùn)行時(shí),還有未運(yùn)行的線程,則此線程wait,否則,此線程喚醒其他阻塞的  
  6.  * 線程,進(jìn)而最終完成線程的運(yùn)行  
  7.  * */ 
  8. public class LockObject {  
  9.  
  10.  private int totalThread = 0;  
  11.  private int currentThread = 0;  
  12.  
  13.  public LockObject(int totalThread) {  
  14.   this.totalThread = totalThread;  
  15.   this.currentThread = 1;  
  16.  }  
  17.  
  18.  public synchronized void waitForOtherThread() {  
  19.   if (this.currentThread < this.totalThread) {  
  20.    this.currentThread++;  
  21.    try {  
  22.     this.wait();  
  23.    } catch (InterruptedException e) {  
  24.     // TODO Auto-generated catch block  
  25.     e.printStackTrace();  
  26.    }  
  27.   } else {  
  28.    this.currentThread = 1;  
  29.    notifyAll();  
  30.   }  
  31.  }  
  32.  
  33.  public int getTotalThread() {  
  34.   return totalThread;  
  35.  }  
  36.  
  37.  public void setTotalThread(int totalThread) {  
  38.   this.totalThread = totalThread;  
  39.  }  
  40.  
  41.  public int getCurrentThread() {  
  42.   return currentThread;  
  43.  }  
  44.  
  45.  public void setCurrentThread(int currentThread) {  
  46.   this.currentThread = currentThread;  
  47.  }  
  48. }  
  49.  

批量線程同步機(jī)制介紹

此對(duì)象提供 二個(gè)私有變量,totalThread 的初始值為所運(yùn)行的線程的總數(shù),currentThread 為當(dāng)前正在運(yùn)行的線程數(shù)。

線程運(yùn)行時(shí)處理完自己的任務(wù)后調(diào)用方法waitForOtherThread 等待其他線程結(jié)束,即當(dāng)前運(yùn)行線程數(shù)與線程總數(shù)的比較

如果運(yùn)行線程數(shù)小于線程總數(shù),則當(dāng)前運(yùn)行線程數(shù)+1 后,當(dāng)前線程進(jìn)入等待狀態(tài),否則,喚醒其他等待線程。

見測(cè)試程序

 
 
 
  1. public class MyThread extends Thread {  
  2.  public static LockObject lo = new LockObject(1000);  
  3.  
  4.  public MyThread(String threadName) {  
  5.   super(threadName);  
  6.  }  
  7.  
  8.  public void run() {  
  9.    System.out.println(Thread.currentThread().getName() + " ----開始運(yùn)行");  
  10.    lo.waitForOtherThread();  
  11.    System.out.println(Thread.currentThread().getName() + " ----結(jié)束運(yùn)行");  
  12.  }  
  13.  
  14.  public static void main(String[] args) {  
  15.   for (int i = 1; i <= 1000; i++) {  
  16.    Thread thread = new MyThread("第" + i + "個(gè)線程");  
  17.    thread.setPriority(NORM_PRIORITY);  
  18.    thread.start();  
  19.   }  
  20.  }  
  21.  
  22. }  

以上就介紹了批量線程同步的實(shí)現(xiàn)。

【編輯推薦】

  1. C#線程同步詳細(xì)分析
  2. 運(yùn)用C#數(shù)據(jù)提供者
  3. C#允許運(yùn)算符重載剖析
  4. Java和C#頂層聲明概述
  5. C#完全限定名簡(jiǎn)單分析

網(wǎng)站題目:多線程的批量線程同步解決方案
鏈接URL:http://m.5511xx.com/article/cohocpc.html