线程的通信

时间:2020-07-22 01:57:15   收藏:0   阅读:72

线程的通信

线程的状态

通信涉及到三个方法

代码实现

class Number implements Runnable {

    private int num = 1;

    @Override
    public void run() {

        while (true) {
            synchronized (this) {

                notify();

                if (num <= 100) {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + ":" + num);
                    num++;

                    try {
                        //使得调用如下wait()方法的线程进入阻塞状态
                        wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }else{
                    break;
                }
            }
        }
    }
}

public class CommunicationTest {
    public static void main(String[] args) {
        Number number = new Number();

        Thread t1 = new Thread(number);
        Thread t2 = new Thread(number);

        t1.setName("线程1");
        t2.setName("线程2");

        t1.start();
        t2.start();
    }
}

注意

sleep()与wait()异同

不同点

相同点

一旦执行方法,都可以使得当前线程进入阻塞状态

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!