将整数传递给java中正在运行的线程

时间:2014-03-16 20:56:25

标签: java multithreading

我在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) {

             }
         }
     }  
   }

1 个答案:

答案 0 :(得分:3)

似乎你有一个缓存的变量值所造成的障碍。要解决此问题,请将您的int声明为volatile

private volatile int mainVal;

这样就不会缓存int。现在,您可以将其传递给其他没有缓存效果的线程。