解决方案 »
- 如何用EntityManager批量新增数据库记录,如何优化?
- 想设计一个基于Java的校园小BBS论坛(大家有什么想法都可以帮我一下)
- web开发页面reload问题
- Jbpm出错啦。找了很久都没有看到答案,高手帮帮我啊
- 问一下弱问题
- 来吧,这个问题谁要是能解决,I服了YOU,<<java 如何支持Dbf文件的数据库,能用JDBC,在哪下,谁能指点一下>>
- 初学struts的问题
- 你是怎么看 Macromedia ColdFusion 的?
- 请大家推荐一本从宏观上介绍J2EE各种技术的书籍
- 如何使用oracle9iAS搭配jbuilder7做开发以及分发呢???
- 关于JDBC连接MySQL的一个疑问~~~~
- springmvc get请求值取不出来
System.err.println("The port number is illegal.");
return;
}这个1<<16是1左移呢还是16右移?
【下载】安卓图书及教学视频
2014年4月微软MVP当选名单揭晓!
你的运行系统和jdk情况如何?
你的workQueue东西,maximumPoolSize没起作用 线程数没能控制到。
应该在for(int i=0;i<=maximumPoolSize;i++){}
然后才是循环1-65535加到workQueue,遍历workQueue直到workQueue为空。
package com.demo.net;import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;public class PortScanner {
public static void main(String[] args) {
String ip = "127.0.0.1";
int start = 1;
int end = 10000;
Queue<Integer> portQueue = new LinkedBlockingQueue<Integer>();
for (int i = start; i < end+1; i++) {
portQueue.offer(i);
}
int threadCount = portQueue.size() >200?200:portQueue.size();
ThreadGroup tg = new ThreadGroup("scan");
for (int i = 0; i < threadCount; i++) {
new Thread(tg,new Scan(ip,portQueue)).start();
}
while(true){
if(tg.activeCount() == 0){
break ;
}
}
System.out.println("ok....");
}
}
class Scan extends Thread{
String ip;
Queue<Integer> portQueue;
public Scan(String ip,Queue<Integer> portQueue){
this.ip = ip;
this.portQueue = portQueue;
}
public void run(){
while(true){
try {
int port = portQueue.poll();
try {
Socket s = new Socket();
s.connect(new InetSocketAddress(ip, port));
System.out.println(ip+":"+port);
s.close();
} catch (Exception e) {
}
} catch (NullPointerException e) {
return ;
}
}
}
}