Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1109702
  • 博文数量: 284
  • 博客积分: 8223
  • 博客等级: 中将
  • 技术积分: 3188
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-01 13:26
文章分类

全部博文(284)

文章存档

2012年(18)

2011年(33)

2010年(83)

2009年(147)

2008年(3)

分类: Java

2010-07-26 19:30:56

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

}


阅读(745) | 评论(0) | 转发(0) |
0

上一篇:java-定时器

下一篇:java文件系统

给主人留下些什么吧!~~