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包写了个多线程,请问下有什么问题没?
解决方案 »
- 类型转换??
- 加密解密
- java webservice 问题
- 请问一下,怎么把一个字符串强制转换成int?
- 我用的是繁体版操作系统 struts国际化 资源文件中读取中文信息出现乱码 怎样解决呢
- 我学过J2EE,现在想学AJAX,谁能给推荐一本AJAX入门的书,先谢了.
- 求大牛指点。在线等结果——————跪求
- 请到http://220.114.108.6:8080/jxc添加条记录
- 请问哪儿有j2eesdk1.3下载啊?
- 菜鸟的我啊又要向大家求救!JBuilder9+weblogic7的数据库程序
- 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掉你的循环。