import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class MyExecutor extends Thread {
String name; public MyExecutor(String s) throws MalformedURLException, RemoteException,
NotBoundException {
this.name = s;
} public void run() {
try {
System.out.println(Thread.currentThread().getName());
System.out.println(" start....");
System.out.println(name);
System.out.println("result:" + s);
Thread.sleep((int) (Math.random() * 1000));
System.out.println(" end...");
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String args[]) throws MalformedURLException,
RemoteException, NotBoundException {
ExecutorService service = Executors.newFixedThreadPool(4); Queue<String> allTasks = new ConcurrentLinkedQueue<String>();
allTasks.offer("1111");
allTasks.offer("2222");
allTasks.offer("3333");
allTasks.offer("4444");
allTasks.offer("5555");
allTasks.offer("6666"); String str; while ((str = allTasks.poll()) != null) {
service.execute(new MyExecutor(str));
System.out.println(str);
} System.out.println("submit finish");
service.shutdown();
}
}
上述代码是用concurrent包写了个多线程,请问下有什么问题没?
解决方案 »
- servlet是自动多线程的。。那么?
- 线程问题??
- 碰到web service无法解决的异常:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/h
- hibernate 配置one-to-many时排序的问题
- js验证不了,请求帮助!!!
- 几个对象的定义与方法不理解
- 求一个jdbc中使用动态代理管理事务的例子
- 请问tomcat是否支持php脚本呀???
- 小弟初学CMP/CMR,有个问题想向老鸟们请教
- 关于本地接口的一个问题
- spring JdbcTemplate问题!!!急等!!
- 求一套学习jdbc,mysql,orcle的视频资料
这样就会超过4个线程了,呵呵
你是要停止队列循环,加个voliate isRunning=true的标志就行了啊while(isRunning&&xxxxx){
....
}
当你的线程返回字符串为false时,改变isRunning=false则可以停止掉你队列的循环。ps:楼主这里最好将allTasks.poll放到while循环里面,这里你的while条件来看,你的程序在跑完线程后,自动就会结束掉你的队列循环。
还有一种停止掉你队列的循环是,在你的线程中加入一个结束消息,例如结束消息为str="End"
然后再你的循环中每次去判断
if("End".equals(result)){
break;
}
若是,则break掉你的循环。