tasks = new LinkedList();
public static void main(String[] args){
//开始执行,输出,现在链表里插入10个 runnable 执行
System.out.println("start");
for (int i = 0; i < 10; i++) {
excuteTime();
}
System.out.println("end");
//消费者 执行链表里的任务,消耗链表里的任务
Thread consumptionThread = new Thread(){
@Override
public void run(){
while(true){
try {
Thread.sleep(1);
} catch (InterruptedException e) {
}
if (!tasks.isEmpty()) {
final Runnable task;
synchronized (tasks) {
task = tasks.getFirst();
}
try {
System.out.println("LinkedList-tasks size:"+tasks.size());
task.run();
} catch (Exception ex) {
//throw ex;
System.out.println(ex);
} finally {
synchronized (tasks) {
tasks.removeFirst();
}
}
}
}
}
};
consumptionThread.start();
//生产者 负责向链表里面添加 runnable
Thread productionThread = new Thread() {
@Override
public void run() {
while(true) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
CreateTaskByThread createTaskByThread = new CreateTaskByThread();
tasks.add(createTaskByThread);
}
}
};
productionThread.start();
}
public static void excuteTime(){
CreateTaskByThread createTaskByThread = new CreateTaskByThread();
tasks.add(createTaskByThread);
}
}
class CreateTaskByThread implements Runnable{
private static int i = 0;
@Override
public void run() {
System.out.println("best_"+ i++);
}
}