我正在尝试使用两个单独的线程打印偶数和奇数,这两个线程通过等待和通知相互通信。
我确实知道我指的是堆中的Integer对象。因此,一个线程所做的更改应该对两个线程都可见。我也使用volatile关键字声明Integet i。
我似乎无法理解即使变量i的值已递增,也如何将其显示为1。
代码的输出是
Even Thread got lock i=1
Even Thread waiting.. i=1
Odd Thread got lock i=1
Odd Thread : i=2
Odd Thread Run called NotifyAll
Odd Thread got lock i=2
Odd Thread waiting.. i=2
Even Thread woken up.. i=1
Even Thread waiting.. i=1
Run Code Online (Sandbox Code Playgroud)
package programs;
public class EvenOdd {
static Object lck = new Object();
volatile static Integer i=1;
volatile static Integer N = 1000;
public static void main(String args[]){
EvenRunner e = new EvenRunner(lck, i, N); …Run Code Online (Sandbox Code Playgroud)