cpu core 和 process thread的困惑

来源:8-3 线程池-3

pookly

2019-04-29

1.一个cpu core只能开一个threadPool吗? 感觉应该是,不然一个cpu都可以并行了
2.cpu就是调度线程的,那进程由谁调度呢?
3.系统不对线程分配资源,那线程的资源是谁给的呢?
求解惑

写回答

1回答

Jimin

2019-04-29

你好,首先肯定不是一个cpu对于一个threadpool,threadpool的数量和cpu数量是无关的,cpu并行其实是因为cpu按照时间片轮转调度算法调度执行导致,对于单个cpu而言,他可以在每个时间片内执行某一个线程,在不同的时间片里执行不同的线程,给我们的感觉就是多个线程在并行处理,而实际上单个cpu是不可能并行,同一个时间点一个cpu只会执行一个线程,而threadpool里的线程理论上是可以由多个cpu一起执行的,否则就不需要做成一个池子了,只需要做成一个队列就可以了,cpu按顺序取出来执行就ok了。
线程的定义是进程中执行运算的最小单位,其实调度线程就相当于在调度进程,执行线程就是在执行进程。
线程可使用的资源是受进程控制的,比如对java进程而言,启动时就确定了当前进程可使用的最大内存等,线程在执行时同一时间可使用的内存总和是不可能大于这个值的。

1
2
Jimin
回复
pookly
线程池,就只是存储线程的,当然不是进程
2019-05-16
共2条回复

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程