单线程java中的多线程多可运行
我试图有一堆可运行的线程,可以一次启动一个。 差不多
First(new Thread() {
public void run() {
//do something
}
});
我想做的事不可能吗
你可以在下面搜索框中键入要查询的问题!
我试图有一堆可运行的线程,可以一次启动一个。 差不多
First(new Thread() {
public void run() {
//do something
}
});
我想做的事不可能吗
# 1 楼答案
最简单的方法是定义几个
Thread
子类实例,并根据您尝试执行的操作调用相应的子类实例但是,如果您确实需要一个在不同情况下表现不同的
Thread
对象,则可以定义一个Thread
子类,该子类具有一个状态变量来控制它的功能然后可以创建线程,在调用
start()
之前,调用setAction
,传递其中一个Action
值作为状态变量的替代方法,
run()
方法可以检查外部变量以确定操作的选择。这是否有意义(以及是否更好)取决于您的应用程序# 2 楼答案
如果您想同时启动几个线程
CountDownLatch
就是您所需要的。请参见此处的示例:http://www.javamex.com/tutorials/threads/CountDownLatch.shtml# 3 楼答案
是的,只有多个私有方法:
或者正如Ted Hopp所指出的那样
# 4 楼答案
对我来说,这听起来是个糟糕的设计。如果你的班级在不同的时间做不同的事情,那么它应该被分成不同的班级
如果您正在谈论重新使用相同的背景线程来做不同的事情,那么我将使用单个线程池,如@Peter的回答中所示:
First
、Second
和Third
类将实现Runnable
。如果需要共享某些状态,它们可以接受构造函数参数# 5 楼答案
您可以使用单线程执行器
# 6 楼答案
您是否试图在单个线程中按顺序执行多个可运行程序?一个接一个
然后您可以调用
(new Thread(new MultiRunnable(... , ...))).start();
这将首先执行第一个Runnable,当它被finished时,它将执行第二个Runnable
或泛化为更易于运行的: