| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> java并发编程的一些知识 -> 正文阅读 |
|
[Java知识库]java并发编程的一些知识 |
目录 线程分为哪几种状态?
getState()方法可获取当前线程的状态
分到cpu时间的:运行 可以分到cpu时间片的:就绪 分不到:阻塞 java中的runnable涵盖了就绪,运行,阻塞IO
wait/sleep的区别
并发/并行的区别并发:同一时刻轮询执行多个线程,宏观上是同时进行,微观上是不同时间进行 并行:同一时刻执行多个线程 管程管程:Monitor 监视器,是一种同步机制,保证同一个时间,只有一个线程能被访问 用户线程/守护线程用户线程:自定义线程 守护线程:后台自动执行的线程,比如垃圾回收,只要其他非守护线程运行结束了,即使守护线程的代码没有执行完,也会执行结束 主线程结束了,用户线程还在运行,jvm存活,没有用户线程了,都是守护线程,jvm结束。 synchronized是java中的关键字,是一种同步锁。它修饰的对象有以下几种:
同步和异步
线程上下文切换CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个 任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这 个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换 什么时候切换?:
当线程发生上下文切换时,需要由操作系统保存当前线程的状态并恢复另一个线程的状态,java中对应的概念就是程序计数器,它的作用是记住下一条jvm指令的执行地址,是线程私有的 线程常用方法?yield();//释放当前cpu的执行权?join();//在线程a中调用线程b的join方法,线程a会陷入阻塞状态直到线程b执行完毕 ?stop();//强制线程生命期结束,不推荐使用 ?boolean isAlive();//判断线程是否还或者 ?sleep(long timemilltime);//让当前线程睡眠指定的milltime毫秒,在指定的milltime毫秒时间内,当前线程是阻塞状态 以下三个方法必须在同步代码块或者同步方法中使用,并且调用者必须是同步代码块或同步方法中的同步监视器(同一把锁)否则会出现IllegalMonitorStateException异常 属于Object类中的方法 ?wait():一旦执行此方法,当前线程进入阻塞状态,并释放同步监视器 ?notify():一旦执行此方法,就会唤醒被wait的一个线程,如果有多个线程被wait,则唤醒优先级高的 ?notifyAll():唤醒所有线程
?
常见线程安全类
? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:43:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |