我有一个由4个进程组成的程序,所有这些进程都需要一个接一个地运行。
草图是这样的:
第一个进程 - 多线程 - 完成了他的工作提供的数据输入
第二个进程 - 多线程 - 完成了他的工作提供了一些数据
第三个进程 - 多线程 - 完成了他的工作提供了一些数据
第四个过程 - 在多线程中 - 完成了他的工作提供的数据输出
注意,为了让一个进程启动他需要完成的进程!
在代码草图中看起来像这样:
public class MainClass{
public static void main(){
addThreadPool();
}
public static void addThreadPool(){
ScheduledThreadPoolExecutor eventPool = new ScheduledThreadPoolExecutor(5);
eventPool.sheduleAtFixedRate(new FirstProcess(),0,5, TimeUnits.SECONDS);
eventPool.sheduleAtFixedRate(new SecondProcess(),5,10, TimeUnits.SECONDS);
eventPool.sheduleAtFixedRate(new ThirdProcess(),15,20, TimeUnits.SECONDS);
eventPool.sheduleAtFixedRate(new ForthProcess(),20,25, TimeUnits.SECONDS);
try{
Thread.sleep(20000);
}
catch(InterruptedException e){
System.err.println(e.getMessaage());
}
}
static class FirstProcess implements Runnable {
ReentrantLock lock = new ReentrantLock();
public void run(){
lock.lock();
System.out.println("FirstProcess started/finished");
lock.unlock();
}
}
static class SecondProcess implements Runnable {
ReentrantLock lock = new ReentrantLock();
public void run(){
lock.lock();
System.out.println("SecondProcess started/finished");
lock.unlock();
}
}
static class ThirdProcess implements Runnable {
ReentrantLock lock = new ReentrantLock();
public void run(){
lock.lock();
System.out.println("ThirdProcess started/finished");
lock.unlock();
}
}
static class ForthProcess implements Runnable {
ReentrantLock lock = new ReentrantLock();
public void run(){
lock.lock();
System.out.println("ForthProcess started/finished");
lock.unlock();
}
}
我希望有人回答这个简单的多线程问题。
请使用ScheduledThreadPoolExecutor帮忙!
答案 0 :(得分:0)
将eventPool传递给Second,Third和FourthProcess的构造函数。让FirstProcess创建和安排SecondProcess等。
可能有更好的方法,但我不满意答案,但它应该有效。