怎么知道我的机器能扛得住多少线程?

呆呆三三 发布于 2017/04/01 15:30
阅读 357
收藏 1

我机器是 八核的

1000个线程没有问题,

for (int i = 0; i < 1000; i++) {
			Thread t1 = new Thread(new Runnable() {
				@Override
				public void run() {
					try {
						Thread.sleep(20 * 1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						System.out.println(e.getMessage());
					}
					System.out.println("11");
				}
			},"第 " + i + " 线程");
			t1.start();
		}

 

怎么测试出线程的极限?

加载中
0
叫我哀木涕
叫我哀木涕

这样测试没有一点意义,线程数的多少是和业务相关的。也不是越多越好。你这样的demo是不怎么占用内存,你可以在线程里面读取一个大文件,然后测试看看。理论上只要你有内存,就可以继续创建线程

0
k
kchr

创建多于你的 CPU 数量的线程,一般没什么意义。一般是 CPU 支持 N 线程,就创建 N+1 线程,其中 1 个主线程,其它 N 个线程构成线程池。

0
呆呆三三
呆呆三三

引用来自“kchr”的评论

创建多于你的 CPU 数量的线程,一般没什么意义。一般是 CPU 支持 N 线程,就创建 N+1 线程,其中 1 个主线程,其它 N 个线程构成线程池。

我怎么知道我的cpu 可以创建多少个线程呢?

0
k
kchr

引用来自“kchr”的评论

创建多于你的 CPU 数量的线程,一般没什么意义。一般是 CPU 支持 N 线程,就创建 N+1 线程,其中 1 个主线程,其它 N 个线程构成线程池。

引用来自“呆呆三三”的评论

我怎么知道我的cpu 可以创建多少个线程呢?

Windows/Linux 这样的平台都有函数,可以查询各种硬件信息,比如系统的 CPU 数量,CPU 物理核心数量,CPU 逻辑核心数量。我们一般让线程数量 = CPU 逻辑核心数量 +1。比如我用 4 核 8 线程的 CPU,那就跑 9 个线程。

蓝水晶飞机
蓝水晶飞机
System.getRuntime().availableProcessors() 取得CPU数
呆呆三三
呆呆三三
cpu就能跑9个线程?创建的太少了吧。
0
中山野鬼
中山野鬼

创建那么多有意义吗?哈。

0
算法与编程之美
算法与编程之美

线程的切换虽然没有进程切换开销大,但还是有一定开销的。另外如果你是单核CPU,就意味着在某一时刻始终只有一个线程能够上CPU。

0
GestureWei
GestureWei

睡眠的线程没有在CPU上运行,自然显得支持数量多。读写文件也不合适,io远远慢于CPU,在线程等io的时候,os就可以再调度其他线程运行。Intel的CPU支持超线程,i7的CPU有四核支持同时运行八个线程,你开8个线程的死循环就发现了

0
jingshishengxu
jingshishengxu

说 N+1的都是从书本上看来的概念人云亦云。实际高并发服务器都是要跑几千个以上线程的。

0
金贞花
金贞花

这和CPU有个蛋的关系啊,有内存你就可以造

返回顶部
顶部