小小默:进无止境

QQ:1274654983

多线程循环交替输出1-100【extends Thread】

实践目标:使用两个线程打印 1-100. 线程1, 线程2 交替打印

线程通信。如下的三个关键字使用的话,都得在同步代码块或同步方法中。

① wait():一旦一个线程执行到wait(),就释放当前的锁。

② notify()唤醒wait的一个的线程;

③ notifyAll():唤醒所有线程;


示例代码如下:

class PrintNum extends Thread {
    static int num = 1;
    static Object obj = new Object();
    public void run() {
        while (true) {
            //obj can instead of PrintNum.class
            synchronized (obj) {
                /*当前线程活动期间才能唤醒其他等待线程*/
                obj.notify();
                if (num <= 100) {
                    try {
                        Thread.currentThread().sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + ":"
                            + num);
                    num++;
                } else {
                    break;
                }

                try {
                    obj.wait();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

}

public class TestCommunication {
    public static void main(String[] args) {
        Thread t1 = new PrintNum();
        Thread t2 = new PrintNum();

        t1.setName("thread1");
        t2.setName("thread2");
        t1.setPriority(Thread.MAX_PRIORITY);//10
        t2.setPriority(Thread.MIN_PRIORITY);//1

        t1.start();
        t2.start();
    }
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/J080624/article/details/53002559
文章标签: 多线程
个人分类: JavaSE-Thread
想对作者说点什么? 我来说一句

多线程 打印1-99,100-199

2011年10月17日 210KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭