当前位置: 首页 > news >正文

营销网站建设优化传奇手游盒子app平台排行榜

营销网站建设优化,传奇手游盒子app平台排行榜,大兴安岭建设局网站,快速做网站哪家好synchronized 到底锁的是谁? 修饰方法: 1、静态方法 2、非静态方法,锁住的是方法的调用者 修饰代码块 1、synchronized修饰非静态方法 锁住的是方法的调用者 锁住实例 流程: 1、线程A先拿到synModel对象然后给这个 synModel对象…

synchronized 到底锁的是谁?
修饰方法:
1、静态方法
2、非静态方法,锁住的是方法的调用者
修饰代码块

1、synchronized修饰非静态方法 锁住的是方法的调用者

锁住实例

流程:
1、线程A先拿到synModel对象然后给这个 synModel对象加上锁–接着等3s执行输出结束
2、线程B等1s后运行,此时 synModel对象 已经被 A拿到,所以他只能等待 等3s后,线程A释放 synModel对象,然后获取对象执行输出结束

public class SynchronizedTest {public static void main(String[] args) throws InterruptedException {SynModel synModel = new SynModel();new Thread(()->{synModel.fun1();},"A").start();TimeUnit.SECONDS.sleep(1);new Thread(()->{synModel.fun2();},"B").start();}
}
class SynModel{public synchronized void fun1()  {try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("1...");}public synchronized void fun2(){System.out.println("2...");}
}

情况1 不会排队

注意:下面这种情况是不会排队的,因为锁的是实例。

public class SynchronizedTest {public static void main(String[] args) throws InterruptedException {SynModel synModel1 = new SynModel();SynModel synModel2 = new SynModel();new Thread(()->{synModel1.fun1();},"A").start();TimeUnit.SECONDS.sleep(1);new Thread(()->{synModel2.fun2();},"B").start();}
}
class SynModel{public  synchronized void fun1()  {try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("1...");}public  synchronized void fun2(){System.out.println("2...");}
}

2 、修饰静态方法

只是把SynModel中的方法变成了静态的,注意此时锁住的是 SynModel这个类,不是锁的实例。会排队 先输出1后输出2

public class SynchronizedTest {public static void main(String[] args) throws InterruptedException {SynModel synModel1 = new SynModel();SynModel synModel2 = new SynModel();new Thread(()->{synModel1.fun1();},"A").start();TimeUnit.SECONDS.sleep(1);new Thread(()->{synModel2.fun2();},"B").start();}
}
class SynModel{public static synchronized void fun1()  {try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("1...");}public static synchronized void fun2(){System.out.println("2...");}
}

3、代码块

synchronized (this){}锁住的是SynModel这个对象。可以看到循环的五次都是同一个SynModel对象。所以五个线程 某个时刻只能有一个线程拿到这个SynModel对象 这个资源。
每个线程会依次输出start end


public class SynchronizedTest {public static void main(String[] args) {final SynModel synModel = new SynModel();for (int i = 0; i < 5; i++) {synModel.fun3();}}
}
class SynModel{public void fun3(){synchronized (this){System.out.println("start");try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("end");}}}

如果把对象放在循环里面,此时就是五个线程拿五个资源了。并没有去争夺资源

public class SynchronizedTest {public static void main(String[] args) {for (int i = 0; i < 5; i++) {final SynModel synModel = new SynModel();new Thread(()->{synModel.fun3();}).start();}}
}
class SynModel{public void fun3(){synchronized (this){System.out.println("ThreadName:"+Thread.currentThread().getName()+"start");try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("ThreadName:"+Thread.currentThread().getName()+"end");}}}

锁住SynModel.class 此时五个线程就会竞争,因为锁住的是 SynModel这个类,而不是实例对象了。

public class SynchronizedTest {public static void main(String[] args) {for (int i = 0; i < 5; i++) {final SynModel synModel = new SynModel();new Thread(()->{synModel.fun3();}).start();}}
}
class SynModel{public void fun3(){synchronized (SynModel.class){// this SynModel.classSystem.out.println("ThreadName:"+Thread.currentThread().getName()+"start");try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("ThreadName:"+Thread.currentThread().getName()+"end");}}}
http://www.yayakq.cn/news/546929/

相关文章:

  • 大型o2o网站开发时间wordpress 文章转页面
  • 做网站咨询北仑网站建设培训
  • 网站建设j基本步骤淘宝指数在哪里查询
  • 成都犀牛网站建设公司最先进的深圳网站建设
  • 站群管理系统cms设计邦官网
  • 网站打包成app软件什么是企业vi设计
  • 网站建设标书范本晋中集团网站建设
  • 固戍做网站的公司商务网站建设实训报告1600字
  • 电商网站开发 数商云杰商网西安网站建设
  • 网站开发的重要性seo3立体构型
  • 购物型网站东莞网站推广渠道
  • 如何做网站的软件wordpress本地服务器
  • 网站开发语言介绍网站建设教程下载
  • 网上做二建题那个网站好2345浏览器电脑版
  • 网站怎么做成app制作app的软件手机版
  • 福州市晋安区建设局网站哈尔滨seo搜索优化
  • 企业网站源码vue深圳企业年报
  • 京东上怎样做网站vps 网站权限
  • 网站做淘宝客赚钱吗个人网站建设模板下载
  • 常州做网站公司有哪些网络营销渠道有哪几种
  • 软件手机站建行网银
  • 枣庄建设路小学网站科技的意义和价值
  • 做网站后端语言用什么搜狗推广停止了吗
  • 轻设计 让网站灵敏轻便的6个技巧设计公司取名大全最新版的
  • 钢材销售都在哪个网站做网页模板免费下载源代码
  • 网站的设计开发用群晖如何做公司网站
  • 怎么做彩票网站的代理网络营销推广体系
  • 网站建设资料动画设计招聘
  • 哪个网站可以学做咸菜村镇建设年度报表登录网站
  • 怎样做月嫂网站网络信息安全