博客
关于我
java进程、线程知识扩充
阅读量:298 次
发布时间:2019-03-03

本文共 908 字,大约阅读时间需要 3 分钟。

进程

1、一个进程至少得有一个线程,我们把这个线程称之为”主线程“

2、一个线程在默认情况下只有一个栈,位置在应用程序的进程地址空间中,而在内核中并没有栈,而是一个叫做线程内核对象的结构体,用来记录该线程的相关参数。

3、默认情况下,一个线程的栈要预留1M的内存空间,一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程。但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。

 

 

线程

一、线程概念

多线程的体现:硬盘、CPU、内存(一般操作都需要经过内存,如:复制粘贴)

1、  java的线程开启,默认的虚拟机会分配1M的内存,可以设置

2、Java进程可以启动的线程数可以通过如下公式计算:

(系统剩余内存 - 最大堆容量Xmx - 最大方法区容量MaxPermSize)/ 最大栈空间Xss这样,4G的服务器单个进程可以开多少线程,可以粗略计算出来,大概是5000个线程

3、一个http请求,就是一个线程。

 

二、tomcat中的线程,默认BIO

tomcat有两种请求方式

  1. 收到一个请求就处理,这个时候就不能处理新的请求,这种为阻塞
  2. 收到一个请求就新开一个线程去处理任务,主线程返回,继续处理下一个任务,这种为非阻塞。

 

  1. 线程池:但是不是每次收到请求就开一个新的线程,而是使用线程池;由于频繁创建、关闭数据库连接会消耗资源,所以会用数据库连接池来保存一定数量的连接,如果需要就从连接池里取连接,不需要则放回连接池,不在频繁创建。
  2. 基于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/

你可能感兴趣的文章
硬核观察 | 有人在比特币骗局中损失了 10 个比特币
查看>>
使用 top 命令了解 Fedora 的内存使用情况 | Linux 中国
查看>>
怎样解决 “sub process usr bin dpkg returned an error code 1” 错误
查看>>
Linux 上最好的五款音乐播放器 | Linux 中国
查看>>
传输层协议
查看>>
细数哪些网络用户需要换IP?
查看>>
2020牛客暑期多校训练营(第九场)
查看>>
The 2016 ACM-ICPC Asia Dalian Regional Contest 部分题解
查看>>
8皇后问题 递归 函数调用是重点
查看>>
1541 +1 *2 ²
查看>>
面试别慌!阿里专家带你从【入门+基础+进阶+项目】攻破SpringBoot
查看>>
【Java面试】30个 Java 集合面试必备的问题和答案
查看>>
华为鸿蒙到底是不是安卓系统套了个壳?
查看>>
redis知识点学习
查看>>
fragment中recyclerview的重新加载问题
查看>>
window程序设计(1):第一个windows程序
查看>>
windows程序设计(4):文本输出
查看>>
21.2.3总结
查看>>
线性代数和数学期望杂题
查看>>
【SSL_P2876】2017年东莞市信息学特长生测试题 工程
查看>>