我可以在这里请教一些建议。
由于存在性能问题,我想在类的构造函数中创建多个线程,因为我想添加更多的系列和流程。但是这些线程需要花费随机的时间进行初始化,这意味着代码仍然可以执行,并且抛开了我的数组列表的顺序,现在混乱了,当代码继续执行时,它并没有完全加载。
Series是一个包装器,用于添加侦听器并简化输出,以使我的框架实例化面板中的图表时需要一系列ArrayList。
什么是正确的进行方法。我觉得我做错了。
new Thread(new Runnable() {
public void run() {
Flow flow = new Flow(idThread, 1);
flows.add(flow);
series.add(new Series(3000, ProcessingType.NONE, flow, controller));
series.add(new Series(5000, ProcessingType.FILTER, flow, controller));
}
}).start();
new Thread(new Runnable() {
public void run() {
Flow flow = new Flow(idThread, 2);
flows.add(flow);
series.add(new Series(4000, ProcessingType.NONE, flow, controller));
series.add(new Series(5000, ProcessingType.FILTER, flow, controller));
}
}).start();
Global.getInstance().mySeries(idThread, series);
trading = new Trading(idThread);
我天真地尝试了
while (series.size()<10){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但是,从逻辑上讲,主线程应该处于休眠状态,并留出时间让其他线程初始化?
谢谢
最佳答案
不要扩展Thread
,实现Runnable
。除非您真的喜欢怪异的错误,否则请不要从构造函数中启动新线程。您可以使用诸如https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html之类的各种同步惯用法来“将马匹排在赛前门口”。
关于java - 多线程初始化同步,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44852030/