【发布时间】:2013-06-05 06:16:03
【问题描述】:
在java中,实现两个线程要求的建议方法是什么
- 我想要一个线程的名字
- 我希望父(或主)线程知道该子线程是否有任何异常。
对于 2,我 understand that 拥有一个未来的对象将是一个更好的方法。所以为了实现上面的两个要求,下面是我想出的一段代码
class MyRunnable implements Runnable {
....
}
MyRunnable myRunnable = new MyRunnable ();
FutureTask futureTask = new FutureTask(myRunnable, null);
Thread myThread = new MyThread(futureTask, "processing-thread");
myThread.start();
try {
futureTask.get();
} catch (Exception e) {
throw new RuntimeException(e)
}
这似乎是很多简单东西的代码。还有更好的方法吗?
注意 - 使用 executorService 不是一个选项,因为我有没有执行类似任务的线程。 executorService 也接受线程名称前缀而不是线程名称。我想给每个线程一个唯一的名称。
【问题讨论】:
-
查找ThreadFactory。实现一个,您可以为从它请求的每个新线程具有唯一的命名。您还可以为 ExecutorService 提供一个,从而覆盖其命名。是什么让您认为 ExecutorService 要求任务相似?
-
@Fildor - 感谢您的回复。如何在不使用 ExecutorService 的情况下使用 ThreadFactory?顺便说一句,我认为由于 ExecutorService 默认使用“pool-1-thread-1”之类的约定命名线程,因此它用于提交类似的执行任务。如何使用 ExecutorService 提交不同的线程并为其赋予唯一的名称?
标签: java multithreading futuretask