本文共 908 字,大约阅读时间需要 3 分钟。
1、一个进程至少得有一个线程,我们把这个线程称之为”主线程“
2、一个线程在默认情况下只有一个栈,位置在应用程序的进程地址空间中,而在内核中并没有栈,而是一个叫做线程内核对象的结构体,用来记录该线程的相关参数。
3、默认情况下,一个线程的栈要预留1M的内存空间,一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程。但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。
多线程的体现:硬盘、CPU、内存(一般操作都需要经过内存,如:复制粘贴)
1、 java的线程开启,默认的虚拟机会分配1M的内存,可以设置
2、Java进程可以启动的线程数可以通过如下公式计算:
(系统剩余内存 - 最大堆容量Xmx - 最大方法区容量MaxPermSize)/ 最大栈空间Xss这样,4G的服务器单个进程可以开多少线程,可以粗略计算出来,大概是5000个线程3、一个http请求,就是一个线程。
tomcat有两种请求方式
基于Java NIO实现的服务器模型
上面说到的几种模型,都是基于BIO(阻塞IO)。而NIO则是非阻塞IO,它是基于IO多路复用技术(例如Reactor模式)实现,只需要一个线程或者少量线程,就可以处理大量请求。从性能上来说NIO实现的服务器并发性一般大于BIO,所以可以实现高性能的服务器。如果感兴趣,可以学习一些基于NIO的网络编程框架,例如Netty、MINA。最后。Tomcat运行可以选择BIO或者NIO模型,原理分别对应上面的3和4两种方式。Tomcat默认是BIO方式运行,如果想要换成NIO,可以配置server.xml:
转载地址:http://vdwq.baihongyu.com/