Java-多线程组的控制

2012-11-12

  class NewThread extends Thread{

  boolean suspendFlag;

  NewThread(String threadname, ThreadGroup tgOb){

  super(tgOb, threadname);

  System.out.println("New thread: "+this);

  suspendFlag = false;

  start();

  }

  public void run(){

  try{

  for(int i=5;i>0;i--){

  System.out.println(getName()+": "+i);

  Thread.sleep(1000);

  synchronized(this){

  while(suspendFlag){

  wait();

  }

  }

  }

  }catch(Exception e){

  System.out.println("Exception in "+getName());

  }

  System.out.println(getName()+"exiting.");

  }

  void mysuspend(){

  suspendFlag = true;

  }

  synchronized void myresume(){

  suspendFlag = false;

  notify();

  }

  }

  public class test {

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  ThreadGroup groupA = new ThreadGroup("Group A");

  ThreadGroup groupB = new ThreadGroup("Group B");

  NewThread ob1 = new NewThread("one", groupA);

  NewThread ob2 = new NewThread("Tow", groupA);

  NewThread ob3 = new NewThread("three", groupB);

  NewThread ob4 = new NewThread("Four", groupB);

  System.out.println("Suspending Group A");

  Thread tga[] = new Thread[groupA.activeCount()];

  groupA.enumerate(tga);

  for(int i=0;i

  ((NewThread)tga[i]).mysuspend();

  }

  try {

  Thread.sleep(4000);

  }catch(InterruptedException e){

  System.out.println("Main thread interrupted.");

  }

  System.out.println("Resuming Group A");

  for(int i=0;i

  ((NewThread)tga[i]).myresume();

  }

  try {

  System.out.println("Waiting for threads to finish.");

  ob1.join();

  ob2.join();

  ob3.join();

  ob4.join();

  }catch (Exception e){

  System.out.println("Exception in Main thread");

  }

  System.out.println("Main thread exiting.");

  }

  }

分享到:
0
相关阅读
友情链接
© 2018 我考网 http://www.woexam.com 中国互联网举报中心 湘ICP备18023104号 京公网安备 11010802020116号
违法和不良信息举报:9447029@qq.com