【发布时间】:2018-03-13 20:39:59
【问题描述】:
我正在开发一个旅行推销员求解器,我试图让它在两个线程中执行并返回路径图(Jframe)和最佳搜索的路径距离/输出。
我的代码如下:
Executer myRunnable = new Executer();
Thread t = new Thread(myRunnable);
t.start();
t.join();
int tdist=(Executer.returnPathValue());
int []comparet = returnSearchedPath();
Thread t1 = new Thread(myRunnable);
t1.start();
t1.join();
int t1dist=(Executer.returnPathValue());
int []comparet2 = returnSearchedPath();
if(tdist<t1dist){
printPath(comparet);
System.out.println(tdist);
}
else{
printPath(comparet2);
System.out.println(t1dist);
}
这个的输出是
SEARCH COMMENCING:
32 10 51 13 12 26 24 23 47 45 15 49 19 29 28 46 25 27 11 50 3 43 22 20 41 1 6 16 2 17 30 21 0 48 31 44 18 40 7 8 9 14 5 4 37 36 33 34 35 38 39 42 32->dist 8904
我现在唯一的问题是在不使用 .join() 的情况下完成相同的结果并让线程同时运行。有什么想法吗?
【问题讨论】:
-
似乎您需要等待两个线程完成,然后比较结果并选择要显示的那个。你有什么问题?在您显示的代码中,您同时显示了两条路径。
-
如何在不先显示结果的情况下运行线程?
-
您如何定义“最佳输出”?你的意思是把总路径长度加起来吗?你的意思是一些子路径长度?我们不知道您的输出代表什么...
-
将其保存在变量中。
-
因为在我的线程运行方法中是输出结果的代码,当我点击开始时它会自动输出
标签: java multithreading user-interface jframe