java多线程问题(200分)

来源:百度知道 编辑:UC知道 时间:2024/06/20 02:09:01
我想做一个线程调度器,把要执行的线程加到一个队列,让同一时间只有一个线程在运行,并且线程只能运行一定时间,时间到了就得让下一个线程运行,按照队列里头的顺序,该怎么弄?
我希望所有的线程都start,但每次真正运行的只有一个,其余的都wait,每个线程只能运行一定时间,时间到了它就wait,把执行权按照队列的顺序交给下一个线程,最后的线程运行完了再交给第一个

谢谢各位了哦,分数再提高,一直到有满意的答案为止.

我需要的是模拟cpu工作的情况,我用同步互斥的办法,让处于死循环的线程wait了,但没有办法让它苏醒,调用notify不顶用。

.

import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class ThreadManager {
private ExecutorService es = Executors.newSingleThreadExecutor();

void add(Runnable task) {
Future<?> future = es.submit(task);

try {
Thread.sleep(2000);//2秒之后中止
future.cancel(true);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}

void shutdown() {
es.shutdown();
}

public static void main(String[] args) {
ThreadManager m = new ThreadManager();
for(int i=0; i<5; i++)
m.add(new Task());
m.shutdown();
}
}

//测试任务
class Task implements Runnable {
private static int count=0;