非静态方法的锁是实例对象本身(this),静态方法的锁是类对象本身(.class)
来源:互联网 发布:安装mysql后怎么使用 编辑:程序博客网 时间:2024/05/22 12:56
public class LockTest { public static void main(String[] args) { MyThread mt = new MyThread(); Thread t1 = new Thread(mt); Thread t2 = new Thread(mt); t1.start(); try { Thread.sleep(10); } catch (Exception e) {} mt.flag = false; t2.start(); }}class MyThread implements Runnable{ private int num = 100; boolean flag = true; @Override public void run() { if(flag){ while(true){ synchronized(this){ //更改这里 if(num > 0){ try { Thread.sleep(10); System.out.println(Thread.currentThread().getName()+"__run__"+num--); } catch (Exception e) {} } } } } else{ while(true){ this.show(); } } } public synchronized void show(){ //还有这里 if(num > 0){ try { Thread.sleep(10); System.out.println(Thread.currentThread().getName()+"__show__"+num--); } catch (Exception e) {} } }}
阅读全文
0 0
- 非静态方法的锁是实例对象本身(this),静态方法的锁是类对象本身(.class)
- this是指向对象本身的一个指针
- 静态synchronized方法和非静态synchronized方法的锁对象不是同一个
- 面向对象的Javascript,创建静态方法和实例方法
- 非静态的字段、方法或属性 要求对象引用
- 非静态的字段、方法或属性要求对象引用
- 非静态的字段,方法或属性。。。。。。要求对象引用
- JAVA 多线程静态同步函数的锁是class 对象
- java-静态同步函数的锁是Class对象
- java多线程-静态同步函数的锁是Class对象
- 多线程静态同步函数的锁是class 对象
- (多线程-静态同步函数的锁是Class对象)
- JAVA 多线程静态同步函数的锁是class 对象
- synchronized 静态 非静态 方法 使用不同锁对象
- 面向对象和静态方法与非静态方法的变量调用问题
- Python Class 的实例方法/类方法/静态方法
- Unity 区分碰撞的是对象本身还是此对象的子对象
- 结合上面的五个例子,对类的静态成员变量和成员函数作个总结: 一。静态成员函数中不能调用非静态成员。 二。非静态成员函数中可以调用静态成员。因为静态成员属于类本身,在类的对象产生之前就已经存在了,所
- map集合的四种遍历方式
- D3DXVec3TransformNormal()和D3DXVec3TransformCoord()
- 一,注册与登陆接口
- linux ubuntu下生成静态库与共享库
- phpStudy,JetBrains PhpStorm安装,及搭建thinkPHP
- 非静态方法的锁是实例对象本身(this),静态方法的锁是类对象本身(.class)
- lintcode反转整数
- 简述MVC与MVP
- HTML5 VideoAPI,打造自己的Web视频播放器
- javascript 删除所有空格的方法
- Redis 集群教程
- 652. Find Duplicate Subtrees
- HBase各版本对Hadoop版本的支持对比
- 免备案虚拟主机与备案虚拟主机的区别