9
回答
怎么知道我的机器能扛得住多少线程?
终于搞明白,存储TCO原来是这样算的>>>   

我机器是 八核的

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();
		}

 

怎么测试出线程的极限?

<无标签>
举报
呆呆三三
发帖于7个月前 9回/273阅

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

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

引用来自“kchr”的评论

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

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

引用来自“kchr”的评论

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

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

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

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

--- 共有 2 条评论 ---
蓝水晶飞机System.getRuntime().availableProcessors() 取得CPU数 7个月前 回复
呆呆三三cpu就能跑9个线程?创建的太少了吧。 7个月前 回复

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

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

顶部