分类: Java
2010-08-23 13:18:37
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."); } }