传递Java线程';参数作为局部参数

传递Java线程';参数作为局部参数,java,multithreading,thread-safety,Java,Multithreading,Thread Safety,我有一个Java数组: int[] arr = {1,5,-1,4,7,10}; ProcessingThread pt1 = new ProcessingThread(arr[0]); Thread t1 = new Thread(pt1) ProcessingThread pt2 = new ProcessingThread(arr[1]); Thread t2 = new Thread(pt2) .. t1.start() t2.start() ..

我有一个Java数组:

  int[] arr = {1,5,-1,4,7,10};
  ProcessingThread pt1 = new ProcessingThread(arr[0]);
  Thread t1 = new Thread(pt1)
  ProcessingThread pt2 = new ProcessingThread(arr[1]);
  Thread t2 = new Thread(pt2)
  ..
  t1.start()
  t2.start()
  ..
我希望每个线程从这个数组中提取一个元素并进行一些计算


如何确保每个元素(arr[1]、arr[2]等)都是本地元素(即,不与其他线程共享,或者换句话说是线程安全的)?

您正在将
int
传递给
ProcessingThread
构造函数。。。此时,
ProcessingThread
本身根本不会引用数组。它已经是线程安全的,因为您正在向不同的线程注入不同的数字,并且您没有将整数数组本身传递给线程?为什么一个线程会看到并修改另一个线程的私有变量?@HadoopUser在发布的示例中,每个线程使用与其可运行线程相同的ProcessingThread实例。这就是为什么它们都读取和修改相同的状态。在上面的代码中,每个线程使用一个单独的ProcessingThread实例,这样就不会发生这种情况:每个实例都有自己的私有int变量。根据您目前所掌握的知识,即使您能提供所有帮助,也无法编写一个工作的并发应用程序。