如何在Java中合并线程?
我有一个项目,其中项目加载在一个线程中,然后最后需要在主UI线程中访问它们(因为它包含OpenGL上下文) 我的问题是,一个线程完成后,如何合并一个线程 代码示例如何在Java中合并线程?,java,multithreading,Java,Multithreading,我有一个项目,其中项目加载在一个线程中,然后最后需要在主UI线程中访问它们(因为它包含OpenGL上下文) 我的问题是,一个线程完成后,如何合并一个线程 代码示例 new Thread(new Runnable() { @Override public void run() { //Load stuff completed. otherClassMethod(Thread.currentThr
new Thread(new Runnable() {
@Override
public void run()
{
//Load stuff completed.
otherClassMethod(Thread.currentThread(), new ResultInterface(){
@Override
public void completed(){
//Start App.
}
})
}
});
public void otherClassMethod(Thread thread, ResultInterface resultInterface)
{
//Create stuff that needs open gl context.
//.....
//-- end create stuff.
Thread thisThread = Thread.currentThread()
thisThread.merge(thread); //?? Where I'm stuck.
ResultInterface.completed
}
要等待另一个线程完成,请调用
otherThread.join()
。
这将阻塞当前线程,直到另一个线程完成
编辑(来自您的示例):
该方法称为
join()
,而不是merge()
。很简单:)你说的合并是什么意思?你想让两个线程访问相同的数据吗?虽然我可能会避免手动管理线程,但请看一看,这会给多线程带来很多麻烦。在这种情况下,我将如何实现连接,我也将看一看executor服务。不确定OpenGL类型的东西,但是像Swing和SWT这样的GUI库有方法将要在UI线程上运行的东西排队。在Swing中,是@iLoveUnicorns,我包含了你例子中的方法。这就像一个魔咒,仍然对线程在幕后的工作方式感到困惑,我猜是某种地图?
public void otherClassMethod(Thread thread, ResultInterface resultInterface)
{
//Create stuff that needs open gl context.
//.....
//-- end create stuff.
thread.join();
resultInterface.completed();
}