我是Java多线程编程的新手。我有一个用例,我有一个名为Diner
的可运行类,并基于程序中不同变量的状态,我想要并行执行Diner
类的不同方法。 要做到这一点的一种方法是将一个run()方法包含多个if条件,这些条件对应于您要执行的不同代码块,如下所示。具有多种方法的Java类可以在线程中执行
public class Diner implements Runnable {
Order order;
int arrivalTime;
public void run() {
if(!isSeated){
//do something to get a seat
}
if(!notEatenYet){
//place order
}
if(!orderHasArrived){
//start eating
}
if(finishedEating){
//pay bill and leave
}
}
}
但是,有没有更好的方法来做到这一点?类似于可以并行化的单个方法(run()
?),可以使用不同的方法进行并行化(过载run()
?)。
我相信我可以使用Akka Actor来完成这样的事情,但我正在寻找一个本地解决方案。
你refered这一点,你只是用'ExectutorService引用的文章http://crunchify.com/how-to-run-multiple-threads-concurrently-in-java-executorservice-approach/ –
@RajithPemabandu '启动并管理多个线程,而不是为每个线程创建一个单独的'Thread'对象。所有创建的线程只有一个任务需要并行执行,即Ping主机。这不是我的问题所指的。 –
你真的想要并行运行类的方法吗?我几乎无法想象一个同时坐下,吃饭和付帐的小餐馆:这种行为是严格顺序的。 –