我在Java中遇到线程问题。我试图从mainthread传递一个整数到Java中的另一个运行线程 - 但值总是为0.有没有办法解决这个问题?我想这就是为什么线程有自己的生命。
这是通过访问器方法接收整数的类。然后它应该在打印方法中打印 - 但正如我所提到的,值是ZERO。
class MyThread implements Runnable {
private int val;
public void run() {
printVal();
}
public void setValue(int val) {
this.val = val;
}
private void printVal() {
while (true) {
System.out.println("val: " + this.val);
try {
Thread.sleep(1000);
} catch (InterruptedException ie) {
}
}
}
}
答案 0 :(得分:3)
似乎你有一个缓存的变量值所造成的障碍。要解决此问题,请将您的int
声明为volatile
private volatile int mainVal;
这样就不会缓存int
。现在,您可以将其传递给其他没有缓存效果的线程。