作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行两个单独的线程:
List<String> where = new ArrayList<String>();
public static void main(String[] args) {
MainWatch R1 = new MainWatch("C:\\test", "Thread1");
R1.start();
MainWatch R2 = new MainWatch("C:\\test2", "thread2");
R2.start();
}
我希望他们都更新 where
数组:
public class MainWatch implements Runnable {
private String location = "";
private Thread t;
private String threadName;
public MainWatch(String l, String threadName) {
location = l;
this.threadName = threadName;
}
public void start() {
if (t == null) {
t = new Thread(this, threadName);
t.start();
}
}
@Override
public void run() {
Where.add(location);
}
}
如何让这两个线程访问主线程上的 where
变量,以便两者都可以访问它?
谢谢!
最佳答案
首先,您需要为您的帖子提供列表链接。为此,您可能需要将 where
设为静态字段。
其次,您需要同步对列表的访问,以免出现 ConcurrentModificationException
。
private static List<String> = new ArrayList<>();
public static void main(String[] args) {
MainWatch R1 = new MainWatch("C:\\test", "Thread1", where);
R1.start();
MainWatch R2 = new MainWatch("C:\\test2", "thread2", where);
R2.start();
}
public class MainWatch implements Runnable {
...
private final List<String> where;
public MainWatch(String loc, String ThreadName, List<String> where) {
location = loc;
this.threadName = threadName;
this.where = where;
}
...
@Override
public void run() {
synchronized(where) {
where.add(location);
}
}
}
关于java - 如何从两个单独的线程更新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38922313/
我是一名优秀的程序员,十分优秀!