关于java线程池的问题,求教!谢谢! java.util.concurrent里面不是有么,为啥要自己写?挑战自我么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 executor[执行器] 去了解一下,已经很完善的线程池和任务管理机制 问题一: public void execute(Runnable[] task) { synchronized (taskQueue) { for (Runnable t : task) taskQueue.add(t); taskQueue.notify(); } } 你线程池中的线程都同步taskQueue,当你添加一个线程的时候notify只能激活一个线程,此时会使整个线程一直工作问题2:ynchronized (taskQueue) { while (isRunning && taskQueue.isEmpty()) {// 队列为空 try { taskQueue.wait(10000); } catch (InterruptedException e) { e.printStackTrace(); } } if (!taskQueue.isEmpty()) r = taskQueue.remove(0);// 取出任务 } if (r != null) { new Thread(r).start();你在线程池线程中启动新的线程,这个不符合线程池的工作原理吧,线程池是使用线程池中的空闲线程执行任务,以便于管理线程,一般是在空闲线程中直接执行任务,而不应用创建新的线程另外你工作线程的写法容易让当前线程一直执行,建议你看看线程池方面的网上示例 ExecutorService threadPool = Executors.newFixedThreadPool(5);//通过这样可以构造一个线程池,这是一个固定线程数量为5的线程池threadPool.execut(Runnable task);//这样让线程去执行runnable 这个题这样做对吗? 关于登陆框的问题 创建实现了接口的匿名内部类对象时,为什么接口变量可以实例化? 这个错误怎么解决啊 哪位大侠推荐一本JAVA数据结构的书?谢谢 请问怎么用纯java语言构造ICMP包,然后实现ping的功能,来测量两个主机之间的rtt? 新手,applet问题! jdk下编的程序,如何在jbuilder7下运行 一个菜鸟问题,对高手来说很简单,先来先得,快点进来回答吧!!!! 程序员的乐趣。。。 线程方面的小问题 JVM问题
public void execute(Runnable[] task) {
synchronized (taskQueue) {
for (Runnable t : task)
taskQueue.add(t);
taskQueue.notify();
}
}
你线程池中的线程都同步taskQueue,当你添加一个线程的时候notify只能激活一个线程,此时会使整个线程一直工作
问题2:
ynchronized (taskQueue) {
while (isRunning && taskQueue.isEmpty()) {// 队列为空
try {
taskQueue.wait(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (!taskQueue.isEmpty())
r = taskQueue.remove(0);// 取出任务
}
if (r != null) {
new Thread(r).start();
你在线程池线程中启动新的线程,这个不符合线程池的工作原理吧,线程池是使用线程池中的空闲线程执行任务,以便于管理线程,一般是在空闲线程中直接执行任务,而不应用创建新的线程
另外
你工作线程的写法容易让当前线程一直执行,建议你看看线程池方面的网上示例
ExecutorService threadPool = Executors.newFixedThreadPool(5);//通过这样可以构造一个线程池,这是一个固定线程数量为5的线程池
threadPool.execut(Runnable task);//这样让线程去执行runnable