240
It works on my machine

Use Wait & Notify to Implement Two Threads Run Alternatively

public class ThreadCommunication {
    public static void main(String[] args) {
        Business business = new Business();
        new Thread(() -> {
            while (true) {
                try {
                    business.thread1();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
        new Thread(() -> {
            while (true) {
                try {
                    business.thread2();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

class Business {
    private boolean thread1First = true;

    public synchronized void thread1() throws InterruptedException {
        while (!thread1First) {
            this.wait();
        }
        thread1First = !thread1First;
        this.notify();
        System.out.println("thread 1 is called!!!");
        Thread.sleep(1000);
    }

    public synchronized void thread2() throws InterruptedException {
        while (thread1First) {
            this.wait();
        }

        thread1First = !thread1First;
        this.notify();
        System.out.println("thread 2 is invoked");
        Thread.sleep(1000);
    }
}

posted @ 2017-01-17 07:34  禾码大叔  阅读(106)  评论(0编辑  收藏  举报