![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 85
听到微笑
这个作者很懒,什么都没留下…
展开
-
为什么wait()、notify()方法需要和synchronized一起使用
提示:更多优秀博文请移步博主的GitHub仓库:GitHub学习笔记、Gitee学习笔记Obj.wait()与Obj.notify()必须要与synchronized(Obj)一起使用,也就是wait,与notify必须通过获取的锁对象进行调用**,从语法角度来说就是Obj.wait(),Obj.notify必须在synchronized(Obj){…}语句块内。从功能上来说wait就是说线...原创 2020-03-27 09:45:06 · 2198 阅读 · 0 评论 -
volatile关键字到底有什么作用
提示:更多优秀博文请移步博主的GitHub仓库:GitHub学习笔记、Gitee学习笔记volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调度。但是volatile 变量的同...原创 2020-03-27 09:42:19 · 12353 阅读 · 3 评论 -
守护线程
提示:更多优秀博文请移步博主的GitHub仓库:GitHub学习笔记、Gitee学习笔记在Java中有两类线程:用户线程(User Thread)、守护线程(Daemon Thread)用个比较通俗的比喻,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结...原创 2020-03-27 09:39:10 · 164 阅读 · 0 评论 -
线程的几种状态
新建( new ):新创建了一个线程对象.可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取 cpu 的使用权 .运行( running ):可运行状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,执行程序代码。阻塞( bloc...原创 2020-03-27 09:37:11 · 365 阅读 · 0 评论 -
线程中断到底是什么
我们如何让线程安全的停止呢?1. 线程自然终止自然执行完或抛出未处理异常。2. stop(),resume(),suspend()方法stop(),resume(),suspend()已不建议使用,stop()会导致线程不会正确释放资源,suspend()容易导致死锁。停止多线程: public void stop();销毁多线程: public void destory();挂起...原创 2020-03-27 09:28:41 · 4205 阅读 · 0 评论 -
创建线程的三种方式
1. 继承Thread类public class MyThread extends Thread { @Override public void run() { System.out.println("这是一个新的线程"); }}public class ThreadTest { public static void main(String[...原创 2020-03-27 09:25:48 · 160 阅读 · 0 评论 -
显示锁之ReentrantLock
ReentrantLock显示锁在Java 1.5之前,协调对共享对象的访问可以使用的机制只有synchronized和volatile两种。Java1.5增加了一种新的机制:ReentrantLock。但ReentrantLock并不是替代内置加锁的方法,而是当内置加锁机制不适用时,作为一种可选择的高级功能。在学习显示锁之前,我们需要明确两个问题:什么是可重入锁锁的公平性指的是什么1...原创 2019-10-09 11:08:03 · 189 阅读 · 0 评论