![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
文章平均质量分 56
不带刺仙人球
这个作者很懒,什么都没留下…
展开
-
线程的5种状态
参考:https://blog.csdn.net/xingjing1226/article/details/81977129 1.新建(NEW):新创建了一个线程对象。 2.可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。 3.运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。 4.阻塞...原创 2021-03-10 11:28:46 · 121 阅读 · 0 评论 -
分布式加锁
参考:https://www.jianshu.com/p/6d1fd5d8fe0a 参考:https://www.cnblogs.com/harry335/p/5473480.html 参考:https://blog.csdn.net/qq_35349114/article/details/84027745 分布式锁:排他性、避免死锁、高可用 实现方式为:数据库实现、基于Redis实...原创 2019-12-12 14:40:56 · 197 阅读 · 0 评论 -
Java自旋锁
参考:https://blog.csdn.net/fuyuwei2015/article/details/83387536 自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。 自旋锁可以使线程在没有取得锁时,不被挂起,而转去执行一个空循环,在若干个空循环后,线程如果可以...原创 2019-12-10 11:27:24 · 218 阅读 · 0 评论 -
线程顺序输出
参考:https://blog.csdn.net/qq_41384351/article/details/91447089 三个线程ID为ABC,每个将自己的ID在屏幕打印10遍,结果按ABCABC...样式显示 ThreadTest.java package jvm; /* * 三个线程ID为ABC,每个将自己的ID在屏幕打印10遍,结果按ABCABC...样式显示 * */...原创 2019-12-03 13:58:17 · 151 阅读 · 0 评论 -
CyclicBarrier
参考:https://blog.csdn.net/qq_38293564/article/details/80558157 CyclicBarrier此为栅栏,类似于闭锁。它能阻塞一组线程直到某个事件的发生。栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行。闭锁用于等待事件,而栅栏用于等待其他线程。 CyclicBarrier可以使一定数量的线程反复地在栅栏位置处汇...原创 2019-12-01 23:30:40 · 94 阅读 · 0 评论 -
wait和notify举例
wait通知,释放锁。 notify不释放锁。 MyThread1等待通知。MyThread2发通知。 package waitNotice; public class MyThread1 extends Thread{ private Object lock; public MyThread1(Object lock){ super(); this.lock=lock; ...原创 2019-12-01 22:36:10 · 366 阅读 · 0 评论 -
volatile
保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。(实现可见性) 禁止进行指令重排序。(实现有序性) volatile 只能保证对单次读/写的原子性。i++ 这种操作不能保证原子性。 volatile的作用是强制从公共堆栈中取得变量的值。 ...原创 2019-12-01 21:33:28 · 125 阅读 · 0 评论 -
java中sleep和wait方法区别
对于sleep方法,该方法属于Thread类,而wait方法,属于Object类。 sleep方法导致了程序暂停执行指定的时间,但会保持监控状态,线程不会释放对象锁。 当调用wait方法的时候,线程会释放对象锁,只有执行notify方法后,本线程才进入运行状态。 main方法,调用另一个类中方法时,另一个类中方法,Thread.currentThread().getName(),...原创 2019-02-15 15:18:36 · 528 阅读 · 0 评论 -
Thread.currentThread().getName()和this.getName()区别
参考Tracycater的专栏 ,网址:https://www.2cto.com/kf/201701/586777.html 参考:Java多线程编程核心技术(P17-P18) package ThreadTest; public class CountOperate extends Thread{ public CountOperate(){ Syste...原创 2018-12-12 10:50:54 · 686 阅读 · 0 评论 -
java线程安全(synchronized )
参考 Rowland的博客: 网址:https://www.cnblogs.com/rwland/articles/9163183.html java synchronized:方法锁、对象锁、类锁 其中:非静态方法锁和对象锁,都是对象实例的锁,即对象锁。应用于对象实例,实例可很多。 静态方法或类,都是类锁,只有一个类。应用于静态方法或类的class。类只有一个。 ...原创 2018-12-27 13:10:50 · 171 阅读 · 0 评论 -
线程同步synchronized与lock的区别
T1为具体的方法,T2为线程对象,T3为运行类。 synchronized当发生异常时,锁会自动释放。且同步不具备继承性。 代码: T1.java package thread; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class T1...原创 2018-12-13 23:49:12 · 255 阅读 · 0 评论