知识大全 多线程的批量线程同步解决方案

Posted

篇首语:日日行,不怕千万里;时时学,不怕千万卷。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 多线程的批量线程同步解决方案相关的知识,希望对你有一定的参考价值。

  多线程运行时有待处理线程?试试看下面介绍的这个批量线程同步方法吧

  在一批线程处理程序中 有时必须等到所有线程全部运行完后 才能进行下一步任务处理 可以采用如下方法解决 创建一个锁对象 该锁对象提供一个当前线程等待其他线程的方法 见代码

   /**

   *

   * 此类主要用来处理线程的同步屏蔽模型 比如 一批线程运行 必须在最后一个线程运行

   * 完后 才能进行下一步的操作 那么就可以创建一个锁对象 锁对象提供一个线程等待其他线程

   * 的方法 如果当前线程运行时 还有未运行的线程 则此线程wait 否则 此线程唤醒其他阻塞的

   * 线程 进而最终完成线程的运行

   * */

   public class LockObject

  

   private int totalThread = ;

   private int currentThread = ;

  

   public LockObject(int totalThread)

     this totalThread = totalThread;

     this currentThread = ;

  

  

   public synchronized void waitForOtherThread()

     if (this currentThread < this totalThread)

      this currentThread++;

      try

       this wait();

      catch (InterruptedException e)

       // TODO Auto generated catch block

       e printStackTrace();

     

     else

      this currentThread = ;

      notifyAll();

    

  

  

   public int getTotalThread()

     return totalThread;

  

  

   public void setTotalThread(int totalThread)

     this totalThread = totalThread;

  

  

   public int getCurrentThread()

     return currentThread;

  

  

   public void setCurrentThread(int currentThread)

     this currentThread = currentThread;

  

  

  

  批量线程同步机制介绍

  此对象提供 二个私有变量 totalThread 的初始值为所运行的线程的总数 currentThread 为当前正在运行的线程数

  线程运行时处理完自己的任务后调用方法waitForOtherThread 等待其他线程结束 即当前运行线程数与线程总数的比较

  如果运行线程数小于线程总数 则当前运行线程数+ 后 当前线程进入等待状态 否则 唤醒其他等待线程

  见测试程序

   public class MyThread extends Thread

   public static LockObject lo = new LockObject( );

  

   public MyThread(String threadName)

     super(threadName);

  

  

   public void run()

      System out println(Thread currentThread() getName() + 开始运行 );

      lo waitForOtherThread();

      System out println(Thread currentThread() getName() + 结束运行 );

  

  

   public static void main(String[] args)

     for (int i = ; i <= ; i++)

      Thread thread = new MyThread( 第 + i + 个线程 );

      thread setPriority(NORM_PRIORITY);

      thread start();

    

  

  

  

cha138/Article/program/Java/gj/201311/27516

相关参考

知识大全 Java的多线程-实现多线程及线程的同步

Java的多线程-实现多线程及线程的同步  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一.实现

知识大全 java破解ip屏蔽+多线程同步拨号

  单线程破解ip屏蔽比较容易只要拨号就行了  多线程抓取数据也比较容易但是引入多线程之后拨号就容易出现问题  多线程抓取的时候这个拨号就比较麻烦一点因为多线程拨号  会出现第一个线程拨号的时候第二个

知识大全 浅谈Java多线程的同步问题

浅谈Java多线程的同步问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  多线程的同步依靠的是

知识大全 Java多线程同步具体实例讲解

Java多线程同步具体实例讲解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java多线程同步

知识大全 Java多线程共享数据、同步、通信

Java多线程共享数据、同步、通信  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一线程共享数据

知识大全 Java多线程问题之同步器CyclicBarrier

Java多线程问题之同步器CyclicBarrier  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 Java多线程同步-BusyFlag或Lock

Java多线程同步-BusyFlag或Lock  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我

知识大全 Java多线程对耗时方法的同步问题

Java多线程对耗时方法的同步问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  各位大牛小弟现

知识大全 Java多线程同步设计中使用Metux

Java多线程同步设计中使用Metux  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Mutex

知识大全 Java多线程锁如何进行数据同步共享

Java多线程锁如何进行数据同步共享  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java多线