方兆国 发表于 2013-05-26 09:27

redcap0 发表于 2013-05-25 23:32 static/image/common/back.gif
回复 19# 方兆国
现在jvm创建的线程,和你用c++创建出来的线程没区别。早期有用户线程说法是进程借助某些 ...



使用内核线程实现:

       内核线程Kernel Thread:直接由操作系统内核支持的线程,这种线程由内核类完成线程切换,内核通过操纵调度器对线程进行调度,并负责将线程的任务映射到各个处理器上。

       轻量级进程Light Weight Process:每个轻量级进程都由一个内核线程支持。

       局限性:各种进程操作都需要进行系统调用(系统调用代价相对较高,需要在用户态和内核态中来回切换);轻量级进程要消耗一定的内核资源,一次一个系统支持轻量级进程的数量是有限的。



使用用户线程实现:

       用户线程:完全建立在用户空间的线程库上,系统内核不能直接感知到线程存在的实现。用户线程的建立、同步、销毁和调度完全在用户态中完成,不需要内核的帮助。所有的线程操作都需要用户程序自己处理。

混合实现:

       将内核线程和用户线程一起使用的方式。操作系统提供支持的轻量级进程则作为用户线程和内核线程之间的桥梁。



Sun JDK,它的Windows版和Linux版都是使用一对一的线程模型来实现的,一条Java线程映射到一条轻量级进程之中。



来自:http://www.cnblogs.com/yshb/archive/2012/06/15/2550367.html



不过百度知道里面有两种说法http://zhidao.baidu.com/question/528797387.html

而红黑联盟上又说是用户多线程,http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f7636d918d027fa3c215cc7902155a66e1b824211319d0c67c6001ab5e5c9daa702d691765eadb9e87128effc13f2ef83044740bf14305d269b8ba3232b754872ae8b86896adf14284dfa1c4ae5144cb23120b86e7fd291764b978816426e2d68e38114867b8fa3115e828033ee95757c646ee91437906f1e1ad2c5bb321c7106280de30a73f62a265a5086a2553d03ca67b543131905857fb534a0685ea2df05b0d5755c25fc3b8d6c79a&p=856dc64ad6c61dff57ed957845579827&newp=8578d616d9c344ed1fbd9b7e0c108c7d5c5bc4387ebad7127596d4&user=baidu&fm=sc&query=java%B6%E0%CF%DF%B3%CC%CA%C7%C4%DA%BA%CB%B6%E0%CF%DF%B3%CC%BB%B9%CA%C7%D3%C3%BB%A7%B6%E0%CF%DF%B3%CC&qid=&p1=5

不过不排除JDK版本造成的原因

方兆国 发表于 2013-05-26 09:28

redcap0 发表于 2013-05-25 23:32 static/image/common/back.gif
回复 19# 方兆国
现在jvm创建的线程,和你用c++创建出来的线程没区别。早期有用户线程说法是进程借助某些 ...
不过还是感觉这些多线程调度什么的由操作系统来完成最好,可以保证程序到哪儿都是正常的,都是最高性能的

redcap0 发表于 2013-05-26 12:56

回复 22# 方兆国


从现在go和rust语言来看,支持协程,这个有点跟用户线程类似。都是在用户态调度。协程开销比内核调度线程小,充分利用分配的时间片,减少线程上下文切换,更能充分利用硬件多核。所以我觉不是什么都内核做才是高效的。

方兆国 发表于 2013-05-26 13:02

redcap0 发表于 2013-05-26 12:56 static/image/common/back.gif
回复 22# 方兆国




不过内核多线程的话,各个线程是和其他进程的平分时间片,而用户多线程的话,是一条进程内各个线程平分时间片

redcap0 发表于 2013-05-27 23:23

怎么没见专家出来说两句

方兆国 发表于 2013-05-28 10:58

redcap0 发表于 2013-05-27 23:23 static/image/common/back.gif
怎么没见专家出来说两句

是不是我们太水了,把人家的话题给毁了……

方兆国 发表于 2013-05-28 10:59

redcap0 发表于 2013-05-27 23:23 static/image/common/back.gif
怎么没见专家出来说两句
这次的楼没有歪啊……

tong0245 发表于 2013-05-28 15:50

不懂啊      

方兆国 发表于 2013-05-28 18:50

tong0245 发表于 2013-05-28 15:50 static/image/common/back.gif
不懂啊

多看看书或者帖子,时间长了就懂了

tong0245 发表于 2013-05-29 09:31

回复 29# 方兆国


    看了也不懂
页: 1 2 [3] 4
查看完整版本: Java虚拟机编程技术大家谈---多核和并发编程(获奖名单已公布-2013-6-7)