开发者社区> 问答> 正文

[@小川游鱼][¥20]在java中绿色线程和本地线程区别?

在java中绿色线程和本地线程区别?

展开
收起
月下丶 2018-12-14 22:35:12 2830 0
3 条回答
写回答
取消 提交回答
  • 2019-07-17 23:21:42
    赞同 展开评论 打赏
  • 绿色线程,还有协程的概念,其实都是在虚拟机层次又虚拟一层线程的概念,本身线程就是操作系统在硬件层次抽象出来的,有人认为绿色线程可以减少内核的线程切换,进而增加程序效率,但是,我认为前提是应用层的线程切换实现真的要不内核级别的快,这个是很困难的,java的第三方库有支持协程的,但是,用的很少。

    2019-07-17 23:21:42
    赞同 展开评论 打赏
  • Green Thread是个历史概念。早期,Java平台在某些平台没有提供本地线程的支持,无法将用户线程映射到OS线程。于是在虚拟机层面建立了用户态的线程,这种线程就是所谓的绿色线程。由于它出于用户态,因此需要JVM对其进行调度。

    后期的Java,绿色线程已经被1:1的线程映射取代,即完全出于内核态。

    内存态的thread现在仍然存在,比如协程,这块可以参考下erlang, goroutine的实现。

    2019-07-17 23:21:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何通过 Serverless 提高 Java 微服务治理效 立即下载
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
多IO线程优化版 立即下载