码迷,mamicode.com
首页 > 编程语言 > 详细

Java线程

时间:2019-05-16 12:31:02      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:方式   获得   轻量级   两种   导致   编写   nbsp   www   控制线   

JAVA线程实现的三种方式:

1. 使用内核线程(Kernel-Level Thread,KLT)

  • 由内核来完成线程切换,内核通过操纵调度器(Scheduler)对线程进行调度,并负责将线程的任务映射到各个处理器上。
  • 轻量级进程(Light Weight Process,LWP):内核线程的一种高级接口
    • 优点:LWP与KLT1对1,因此每个都成为一个独立的调度单元,即使有一个轻量级进程在系统调用中阻塞,也不会影响整个进程继续工作。
    • 缺点:由于基于内核线程实现,所以各种线程操作(创建、析构及同步)都需要进行系统调用,代价相对较高,需要在用户态(User Mode)和内核态(Kernel Mode)中来回切换;另外,一个系统支持轻量级进程的数量是有限的。
2.  使用用户线程(User Thread,UT)
  • 优点:由于用户线程的建立、同步、销毁和调度完全在用户态中完成,不需要内核的帮助,甚至可以不需要切换到内核态,所以操作非常快速且低消耗的,且可以支持规模更大的线程数量。
  • 缺点:由于没有系统内核的支援,所有的线程操作都需要用户程序自己处理,线程的创建、切换和调度都是需要考虑的问题,实现较复杂。
  • 进程与用户线程1对n的关系
3. 使用用户线程加轻量级进程混合
  • 优点:以支持大规模的用户线程并发,且用户线程的系统调用要通过轻量级线程来完成,大大降低了整个进程被完全阻塞的风险。
  • 用户线程与轻量级进程之间多对多的关系

作者:厘米姑娘
链接:https://www.jianshu.com/p/90a036212cb4
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


作者:厘米姑娘
链接:https://www.jianshu.com/p/90a036212cb4
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Java线程调度的两种方式:

1. 协同式线程调度(Cooperative Threads-Scheduling)

  • 由线程本身来控制线程的执行时间。线程把自己的工作执行完后,要主动通知系统切换到另外一个线程上。
  • 好处:实现简单;切换操作自己可知,不存在线程同步的问题。
  • 坏处:线程执行时间不可控,假如一个线程编写有问题一直不告知系统进行线程切换,那么程序就会一直被阻塞。

2. 抢占式线程调度(Preemptive Threads-Scheduling)

  • 由系统来分配每个线程的执行时间。
  • 好处:线程执行时间是系统可控的,不存在一个线程导致整个进程阻塞的问题。可以通过设置线程优先级,优先级越高的线程越容易被系统选择执行。

Java线程

标签:方式   获得   轻量级   两种   导致   编写   nbsp   www   控制线   

原文地址:https://www.cnblogs.com/qionglouyuyu/p/10874838.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!