Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2548008
  • 博文数量: 2110
  • 博客积分: 18861
  • 博客等级: 上将
  • 技术积分: 24420
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-05 18:23
文章分类

全部博文(2110)

文章存档

2011年(139)

2010年(1971)

我的朋友

分类: Java

2010-08-23 13:18:37

 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.");

  }

  }

阅读(234) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~