线程加锁this详解
来源:互联网 发布:暖气片 知乎 编辑:程序博客网 时间:2024/04/30 03:43
1:用this和类名.class却别对象时加锁的不同
用this
多线程调用同方法时 要调用的同一个第一对象的方法 不然打达不到线程加锁 因为他调用的是不同对象的锁
A a = new A();
Thread th1 = new Thread(a);
th1.start();
Thread th2 = new Thread(a);
th2.start();
Thread th3 = new Thread(a);
th3.start();
Thread th4 = new Thread(a);
th4.start();
public void run() {
while(flag){
synchronized (this) {
if(count<TATOL){
salticket();
}else{
flag = false;
}
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
用类名.class
不管实例化多少个对象 是对类对象进行加锁(反射)所以可以实例化多个对象 但仍可实现对同方法的加锁
Thread th1 = new Thread( new A());
th1.start();
Thread th2 = new Thread( new A());
th2.start();
Thread th3 = new Thread( new A());
th3.start();
public void run() {
while(flag){
synchronized (A.class) {
if(count<TATOL){
salticket();
}else{
flag = false;
}
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
0 0
- 线程加锁this详解
- POSIX 线程详解(3-互斥量:"固定加锁层次"/“试加锁-回退”)
- POSIX 线程详解(3-互斥量:"固定加锁层次"/“试加锁-回退”)
- 线程银行转账加锁
- java线程加锁
- Java线程加锁方式
- Mysql加锁过程详解
- Mysql加锁过程详解
- iOS线程关键资源加锁
- python线程加锁(七)
- 诡异的线程加锁问题
- synchronized关键字加锁-线程可重入
- 诡异的线程加锁问题
- 生产者消费者及线程加锁
- 线程同步(两个线程同步 加锁)
- 在一个线程加锁,另一个线程解锁
- MySQL 加锁处理分析详解
- 不加锁的线程间通信
- JS操作JSON总结
- 菜鸟入门C#(四)
- cpp5.1
- 根据JSON数据,自动生成Table
- Bootstrap 模态对话框只加载一次 remote 数据的解决办法
- 线程加锁this详解
- 按钮点击事件的四种写法
- heap表按字符串和数值型排序规则
- 一天一条Linux指令-rm
- 【leetcode 343】Integer Break
- Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能
- Hadoop 2.x分布式集群部署
- 关于学生成绩表的两个SQL题目
- 02 练习