当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
Java:多线程组的控制
发布时间:2010/8/1 12:04:32 来源:城市学习网 编辑:ziteng
  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();
  }
  }[NextPage]   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<tga.length;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<tga.length;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.");
  }
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved