解决方案 »
- java如何监控windows的服务程序
- IE乱码
- 关于spring 自动扫描和注册Bean组件的问题
- spring tiles
- 做的网站在二三十个人同时在线的时候,大概能运行2个小时,tomcat连接池就会出问题
- 我正在学习 JAVA SERVER FACE(JSF), 有兴趣的朋友可以一起学啊! 群号:18198094
- 你写程序时有做单元测试吗?
- 在struts中,如何在页面初始化是,不让struts自动初始化其中的form?
- 讨论:使用哪些完全免费的东西构建最完善最稳定的基于j2ee的网站!!!!!!
- IDEA求各位帮小弟看看为啥错了
- mybatis配置文件中 写一个select
- 对JAVA WEB的一个疑问,很SB的问题 希望有人解答
thread是用于处理多IO操作的(线程归根结底是为了合理利用资源,资源是什么,就是CPU以及内存的利用,对于这些的操作都是围绕IO进行的)。
它们之间的交互是在于socket在通信的时候,也是io ---> socket.getInputStream socket.getOutputStream
那么当多个请求(1个请求就是1个socket,你可以这么理解),那么请求就会产生队列,而socket的io是阻塞式的,所谓的阻塞就是我当前这个线程一次只能处理一个请求,那么后面的请求你们都需要等待我当前这个线程处理一个请求结束后再处理,此时就可以去创建多个线程(一般为了线程的循环利用,都是线程池)去处理多个请求。
如果你用过tomcat等类似的容器,它们一般都会有一个配置参数,就是配置最大请求处理数,其实就是上面说的线程池中的线程个数。
多线程是一种并发处理机制,不是哪个类随便都需要支持多线程的,要看你访问的是否是一个可变状态的变量,具体可以参考我的我的围脖。socket是套接字通信协议,是基于TCP/UDP的,有BIO、NIO、AIO,效率高框架丰富的那就是NIO了,有MINA、
NETTY。
this.name = name;
} @Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(this.name + "--->执行");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
} Thread a = new MyThread("a");
Thread b = new MyThread("b");
// run是方法调用
// a.run();
// b.run();
// start是启动线程。
a.start();
b.start();
}
}
NETTY。
这里有代码实例:http://blog.csdn.net/andy_gx/article/details/42804273 ,跟着实例学习java多线程。