小编ash*_*199的帖子

整数值未刷新

我正在尝试使用两个单独的线程打印偶数和奇数,这两个线程通过等待和通知相互通信。

我确实知道我指的是堆中的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)

java multithreading

3
推荐指数
1
解决办法
119
查看次数

标签 统计

java ×1

multithreading ×1