最多能同时运行5个线程,第6个线程只能等待前边的线程执行后才能运行;且后面的线程按优先顺序排队运行。
请写出设计思路及代码
请写出设计思路及代码
解决方案 »
- byte b=2;b=b+1;可以通过b=b-1不行,这是为什么?
- 关于JAVA读取JSP文件成字符串的问题
- 如何让"system.out.print("abc")"显示的字符显示到窗体里?
- come here 谁会jni的过来
- 一个关于图片显示的问题
- 关于java.io.File类中的renameTo方法疑惑
- 怎么做一个类似系统菜单的applet,有什么好方法?
- JAVA连接Oracle数据库问题
- 大家以后的发展方向是什么?能交流一下么?是就想学好专业知识,打一辈子工?还是自己开公司?还是要考研究生,使自己提高一个档次?还是想办法出国深造?发言比有分!!!
- 掌握向上转型与向下转型
- Swing的一种效果的实现
- 5行代码求解释
package com.ticmy.concurrency;import java.util.Date;
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;public class TestPriorityTask {
private static PriorityBlockingQueue<Runnable> workQueue = new PriorityBlockingQueue<Runnable>();
private static ThreadPoolExecutor pool = new ThreadPoolExecutor(5, 5, 0L, TimeUnit.MILLISECONDS, workQueue);
public static void main(String[] args) throws Exception {
for(int i=0; i<20; i++) {
pool.execute(new Task(i));
}
pool.awaitTermination(0, TimeUnit.MILLISECONDS);
pool.shutdown();
}
}class Task implements Runnable,Comparable<Task> {
private int priority;//数值越大,优先级越大
public Task(int priority) {
this.priority = priority;
}
public void run() {
System.out.println("当前任务优先级:" + priority + ",执行线程:" + Thread.currentThread() + ",执行此句的时间:" + new Date());
try {
TimeUnit.SECONDS.sleep(3);
} catch (Exception e){}
}
public int compareTo(Task o) {
return o.priority - priority;
}
}对于同一批执行的任务(5个),是没法让谁先执行的,因为这涉及到CPU的调度。从总体上来看,是按优先级排列的