首页 > 其他分享 >操作系统原理之线程的分类:用户级线程和内核级线程

操作系统原理之线程的分类:用户级线程和内核级线程

时间:2022-11-28 19:56:57浏览次数:69  
标签:操作系统 用户 线程 切换 悲观 数据 内核

本篇文章作为Java并发编程的前置重点知识,有助于理解乐观锁和悲观锁。

 

这个世界上只有两种锁-->

乐观锁:指的是在操作数据的时候非常乐观,乐观地认为别人不会同时修改数据,因此乐观锁默认是不会上锁的,只有在执行更新的时候才会去判断在此期间别人是否修改了数据,如果别人修改了数据则放弃操作,否则执行操作。

悲观锁:指的是在操作数据的时候比较悲观,悲观地认为别人一定会同时修改数据,因此悲观锁在操作数据时是直接把数据上锁,直到操作完成之后才会释放锁,在上锁期间其他人不能操作数据。

 

Java中大部分都是悲观锁,很多悲观锁本身也有一定的缺点,缺点即是:用户态和内核态的频繁切换消耗性能。

在这种背景下,乐观锁的思想应运而生。

 

再回到本篇主题。

用户级线程:应用程序管理的线程;优点:不需要内核模式特权,线程之间切换速度很快(不需要到内核态),

内核级线程:操作系统内核管理的线程,内核线程切换速度慢。

**用户线程完成系统调用的时候,还是要切换回用户态,继续执行代码的。

 

更多关于用户级线程和内核级线程,请移步

 

状态切换:

1,系统调用

比如:读写文件,申请内存(new对象时)等等,具体包括 进程、文件、设备、信息、通信等情况;

2,中断

3,异常

用户线程的阻塞和唤醒会映射到内核线程上,容易频繁引起内核态和用户态的切换。

比如Java中:AQS是基于用户态函数级别的锁;而jdk1.6之前的synchronized就是内核级别的重量级锁,本身会引起用户态到内核态的频繁切换。

 

 

 

标签:操作系统,用户,线程,切换,悲观,数据,内核
From: https://www.cnblogs.com/hangwei/p/16925610.html

相关文章

  • Java多线程经典概念题
    Java多线程经典概念题1.并行和并发有什么区别?并发(concurrency)和并行(parallellism)是:解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间......
  • Java多线程经典编程题
    Java多线程经典编程题1.要求线程a执行完才开始线程b,线程b执行完才开始线程packagecom.example.javatest.theardTest.MultiThreadAlgorithm;/**要求线程a执行完才......
  • 小新学Java13-【线程池、Lambda表达式】
    一、等待唤醒机制1.1线程间通信概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。1.2等待唤醒机制什么是等待唤醒机制?这是多个线程间的一种协作机......
  • 子线程Handler.sendMessage 报错:Attempt to invoke virtual method 'boolean android.
    原因一:检查是否定义handler,需要定义handler来接受sendMessage发送的数据,具体代码如下:privateHandlerhandler;handler=newHandler(){@Override......
  • 图数据平台解决方案:操作系统环境准备
    图数据平台解决方案:操作系统环境准备​​图数据平台解决方案:操作系统环境准备​​​​一、安装CentOS系统​​​​二、安装Xshell7终端管理工具​​​​三、安装Java运行环......
  • 多线程笔记-1
    多线程学习(一)线程的介绍 一、创建线程的方式 1.继承Thread类 publicclassMyThreadextendsThread{ @Override publicvoidrun(){ System.out.println......
  • 从JMM模型复盘Java多线程
    从JMM模型复盘Java多线程多线程的由来任何事情都是有一个发展的历程,多线程也是,我们聊聊多线程的历史。最开始的时候什么都没有,只有CPU和磁盘的概念。之后人们觉得CPU......
  • 线程中断方法interrupt() 与 cancel()
    (一).关于interrupt()    interrupt()并不直接中断线程,而是设定一个中断标识,然后由程序进行中断检查,确定是否中断。    1.sleep()&interrupt()    线程A正在使......
  • Java线程中断的本质深入理解
      Java的中断是一种协作机制。也就是说调用线程对象的interrupt方法并不一定就中断了正在运行的线程,它只是要求线程自己在合适的时机中断自己。一、Java中断的现象 首先,......
  • Java多线程中锁的理解与使用
    1.简介锁作为​​并发​​共享数据,保证一致性的工具,在JAVA平台有多种实现(如synchronized和ReentrantLock等)。2.Java锁的种类公平锁/非公平锁可重入锁独享锁/共享锁互......