① java如何依据cpu核数设置合适的线程数
1:获取cpu核心数:
Runtime.getRuntime().availableProcessors();
创建线程池:
Executors.newFixedThreadPool(nThreads);//nThreads为线程数
2:这个只要服务器内存够大,CPU核心数较多,处理数据比较强就好了,注意不要一下分配几千个线程,可 能会导致堆栈溢出的,这样程序就挂了,因为线程很费内存资源
② java多线程开多少上限量。
1。java的线程开启,默认的虚拟机会分配1M的内存,但是在4G的windows上线程最多也就开到300多 ,是因为windows本身的一些限制导致。
2。虚拟机给每个线程分配的内存(栈空间)是由虚拟机参数-Xss来指定的,在不同平台上对应的默认大小可以 在oracle的官方文档上查询到:
http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman /optionX.html
其中,Linux64位默认Xss值为256K,并非1M或10M
3。一个Java进程可以启动的线程数可以通过如下公式计算:
(系统剩余内存 - 最大堆容量Xmx - 最大方法区容量MaxPermSize)/ 最大栈空间Xss
这样,4G的服务器单个进程可以开多少线程,可以粗略计算出来,大概是5000个线程。
③ java应用中可以有多少 线程池
线程池只存在一个才对。类似于数据库连接池么,存在的目的就是控制数据库的连接数量。如果存在的多个的话那就没意义了。线程池中可以控制并发的线程数量,一样的道理
④ 如何在c盘中查看java线程数
Windows
通过任务管理器查看进程信息
在进程页签中查看Java进程,我是idea启动,因此可以在idea下查看相关进程
此外可以在详细信息页签下Ctrl+f搜索java
通过控制台查看进程信息
进入CMD,键入tasklist,可以查看所有的进程信息,包括进程ID、内存使用情况
查看Java相关的进程,可以添加过滤条件 tasklist | findstr "java" ,需要注意windows中字符串需要使用双引号,要不就不加也是可以的
如果是在IDEA中启动程序,可以借用idea的Terminal终端执行命令
taskkill 杀死进程
杀死进程使用taskkill /pid 指定进程id,如果无法杀死,可以尝试强制杀死taskkill /pid 进程id -t -f
可以看到idea控制台中进程已结束
通过tasklist | findstr 进程id 已经无法查询到该进程,说明进程终止成功