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

青岛网站建设技术托管网站建设费钱吗

青岛网站建设技术托管,网站建设费钱吗,php 企业网站多少钱,百度网址ip什么是Synchronized synchronized是Java提供的一个关键字#xff0c;Synchronized可以保证并发程序的原子性#xff0c;可见性#xff0c;有序性。 我们会把synchronized称为重量级锁。主要原因#xff0c;是因为JDK1.6之前#xff0c;synchronized是一个重量级锁相比于J…什么是Synchronized synchronized是Java提供的一个关键字Synchronized可以保证并发程序的原子性可见性有序性。 我们会把synchronized称为重量级锁。主要原因是因为JDK1.6之前synchronized是一个重量级锁相比于JUC的锁显得非常笨重存在性能问题。JDK1.6及之后Java对synchronized进行的了一系列优化性能与JUC的锁不相上下。 Synchronized 使用 synchronized可以修饰方法和代码块 方法可修饰静态方法和非静态方法 代码块同步代码块的锁对象可以为当前实例对象、字节码对象class、其他实例对象 1 修饰方法普通方法 synchronized修饰普通方法锁对象默认为this 2 修饰静态方法 锁对象为Class对象 3 代码块 synchronized (lockobj) {// 书写同步代码 }Synchronized原理分析 public class Demo {Object lock new Object();public synchronized void demo() {}public void execute() {synchronized (lock) {System.out.println(get lock);}} }javac Demo.java javap -c Demo.classpublic synchronized void syncMethod();Code:0: getstatic #4 // Field java/lang/System.out:Ljava/io/PrintStream;3: ldc #5 // String get lock5: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V8: returnpublic void executeMethod();Code:0: aload_01: getfield #3 // Field lock:Ljava/lang/Object;4: dup5: astore_16: monitorenter7: getstatic #4 // Field java/lang/System.out:Ljava/io/PrintStream;10: ldc #5 // String get lock12: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V15: aload_116: monitorexit17: goto 2520: astore_221: aload_122: monitorexit23: aload_224: athrow25: return 从上述字节码指令看的到同步代码块和同步方法的字节码是不同的 对于synchronized同步块对应的monitorenter和monitorexit指令分别对应synchronized同步块的进入和退出。 为什么会多一个monitorexit编译器会为同步块添加一个隐式的try-finally在finally中会调用monitorexit命令释放锁 对于synchronized方法对应ACC_SYNCHRONIZED关键字JVM进行方法调用时发现调用的方 法被ACC_SYNCHRONIZED修饰则会先尝试获得锁方法调用结束了释放锁。在JVM底层对于这两种synchronized的实现大致相同。都是基于monitorenter和monitorexit指令实现底层还是使用 标记字段MarkWord和Monitor管程来实现重量级锁。 什么是管程 Monitor中文翻译为管程也有人称之为“监视器”管程指的是管理共享变量以及对共享变量的操作过程让他们支持并发。 Java中的所有对象都可以作为锁每个对象都与一个 monitor 相关联线程可以对 monitor 执行lock 和 unlock 操作。 Java并没有把lock和unlock操作直接开放给用户使用但是却提供了两个指令来隐式地使用这两个操作moniterenter和moniterexit。moniterenter对应lock操作moniterexit对应unlock操作通过这两个指锁定和解锁 monitor 对象来实现同步。 当一个monitor对象被线程持有后它将处于锁定状态。对于一个 monitor 而言同时只能有一个线程能锁定monitor其它线程试图获得已被锁定的 monitor时都将被阻塞。当monitor被释放后阻塞中的线程会尝试获得该 monitor锁。一个线程可以对一个 monitor 反复执行 lock 操作对应的释放锁时需要执行相同次数的 unlock 操作。 管程相关文档 https://www.cnblogs.com/binarylei/p/12544002.html#2-%E7%AE%A1%E7%A8%8Bmonitor Synchronized锁升级 在JDK1.6之后同步锁一共有四种状态级别从低到高依次是无锁偏向锁轻量级锁重量级锁。这四种状态 会随着竞争激烈情况逐渐升级。 偏向锁(需要运行时间在5-6s以上JVM才会开启) 只有一个线程访问锁资源无竞争的话偏向锁就会把整个同步措施都消除并记录当前持有锁资源的线程和锁的型。 轻量级锁 轻量级锁是基于这样一个想法只有两个线程交替运行时如果线程竞争锁失败了先不立即挂起而是让它飞一会儿自旋在等待过程中可能锁就被释放了这时该线程就可以重新尝试获取锁同时记录持有锁资源的线程和锁的类型。 有关锁的信息都是object对象头中markdown来保存的 锁升级过程演示 对象头怎么看每一位的含义可以看这篇博客 public class Demo {public static void main(String[] args) throws InterruptedException {// 为了开启偏向锁Thread.sleep(5001);Object lock new Object();// 偏向锁 110printObj(lock, 1);// 都在main线程里面所以还是偏向锁synchronized (lock) {printObj(lock, 2);}// 再开一个线程进行资源争抢new Thread(() - {synchronized (lock) {System.out.println(get lock one);// 升级成为了轻量级锁 00printObj(lock, 3);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}).start();// 再开一个线程进行资源争抢new Thread(() - {synchronized (lock) {System.out.println(get lock two);}}).start();// 少量竞争轻量级锁 00printObj(lock, 4);// 让上面的线程结束 然后开始疯狂竞争// 竞争非常的激烈会升级成重量级锁 10Thread.sleep(2000);for (int i 0; i 10; i ) {new Thread(() - {synchronized (lock) {try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(get lock three);}}).start();}printObj(lock, 5);}static void printObj(Object o, int i) {String s ClassLayout.parseInstance(o).toPrintable();System.out.println(s i);} }java.lang.Object object internals:OFFSET SIZE TYPE DESCRIPTION VALUE0 4 (object header) 05 00 00 00 (00000101 00000000 00000000 00000000) (5)4 4 (object header) 00 00 00 00 (00000000 00000000 00000000 00000000) (0)8 4 (object header) e5 01 00 f8 (11100101 00000001 00000000 11111000) (-134217243)12 4 (loss due to the next object alignment) Instance size: 16 bytes Space losses: 0 bytes internal 4 bytes external 4 bytes total1 java.lang.Object object internals:OFFSET SIZE TYPE DESCRIPTION VALUE0 4 (object header) 05 d8 aa 05 (00000101 11011000 10101010 00000101) (95082501)4 4 (object header) e4 01 00 00 (11100100 00000001 00000000 00000000) (484)8 4 (object header) e5 01 00 f8 (11100101 00000001 00000000 11111000) (-134217243)12 4 (loss due to the next object alignment) Instance size: 16 bytes Space losses: 0 bytes internal 4 bytes external 4 bytes total2 get lock one java.lang.Object object internals:OFFSET SIZE TYPE DESCRIPTION VALUE0 4 (object header) c8 ed 5f ad (11001000 11101101 01011111 10101101) (-1386222136)4 4 (object header) b5 00 00 00 (10110101 00000000 00000000 00000000) (181)8 4 (object header) e5 01 00 f8 (11100101 00000001 00000000 11111000) (-134217243)12 4 (loss due to the next object alignment) Instance size: 16 bytes Space losses: 0 bytes internal 4 bytes external 4 bytes total3 java.lang.Object object internals:OFFSET SIZE TYPE DESCRIPTION VALUE0 4 (object header) c8 ed 5f ad (11001000 11101101 01011111 10101101) (-1386222136)4 4 (object header) b5 00 00 00 (10110101 00000000 00000000 00000000) (181)8 4 (object header) e5 01 00 f8 (11100101 00000001 00000000 11111000) (-134217243)12 4 (loss due to the next object alignment) Instance size: 16 bytes Space losses: 0 bytes internal 4 bytes external 4 bytes total4 get lock two java.lang.Object object internals:OFFSET SIZE TYPE DESCRIPTION VALUE0 4 (object header) ba 71 b5 05 (10111010 01110001 10110101 00000101) (95777210)4 4 (object header) e4 01 00 00 (11100100 00000001 00000000 00000000) (484)8 4 (object header) e5 01 00 f8 (11100101 00000001 00000000 11111000) (-134217243)12 4 (loss due to the next object alignment) Instance size: 16 bytes Space losses: 0 bytes internal 4 bytes external 4 bytes total5
http://www.w-s-a.com/news/393053/

相关文章:

  • 网站建设详细合同范本长沙注册公司流程与费用
  • 搜索引擎网站录入wordpress怎么修改导航
  • 业务接单网站重庆网站制
  • 绿色农产品网站景区网站建设策划方案
  • 服务器做ssr后还可以做网站吗品牌形象设计公司
  • 太原网站制作计划wordpress创建文章
  • 网站优化要怎么做seo网站关键词优化报价
  • 公司网站友情链接怎么做副链华为荣耀手机官网
  • 一条龙做网站旅游网页设计模板图凡科
  • 中山网站建设哪家便宜在中国做外国网站怎么收钱
  • 网站优化大计孝感注册公司
  • 设计接单app平台有哪些在线网站seo诊断
  • 兰州网站建设推广现代营销手段有哪些
  • 郴州网站seo优化网络安全哪个培训班比较好
  • 做网站需要记哪些代码企业网站建设思路
  • 重庆自助建站模板网络服务器配置与管理
  • 外贸网站怎样做小程序买量平台
  • 中山精品网站建设机构海外留学网站建设方案
  • 长春网站建设工作如何取消wordpress页脚
  • 忻府网站建设排名网络管理系统官网
  • 张家港外贸网站建设国医堂网站平台建设
  • 水冶那里有做网站的对于网站链接优化有哪些建议
  • 宝安中心地铁站是几号线化妆品网站做的好的
  • 海宁营销型网站设计企业融资是什么意思
  • 淘宝客做网站要钱吗网站开发试题库
  • 10g空间网站做视频网站网站建设找超速云
  • 一元购网站怎么做企业网站源码cms
  • 域名不变 网站改版临沂企业网站建站模板
  • 天河网站建设信科网络外包公司和公司直招哪个好
  • 网站制作哈尔滨聊天系统源码