我一直在尝试解决涉及使用wait()和notify()的线程通信的问题。基本上我有2个线程T1和T2,我希望它们按以下顺序执行
T1,T2,T1,T2 .....我该如何实现?
实际的问题:有两个线程T1-打印奇数(例如1-100),而T2-打印偶数(1-100)。现在,输出应为1,2,3,4,5,.... 100
您描述了生产者-消费者模式。
它是Java的实现,在许多Java书籍中都有描述,包括Naughton和Schildt撰写的M.Grand的“ Java模式中的卷。
基本思想:两个线程都应使用1个监视器(即,它们的代码应在synchronized(monitor) {}块内)。您还需要一些标志变量,该变量应指示当前应在两个线程中的哪个工作。
synchronized(monitor) {}
当您的线程之一在同步块内时,应检查标志变量是否轮到他做这项工作。如果是,则使其工作,然后更改标志值,然后通知所有等待的线程。如果否,则应等待。