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

乐器产品主要在什么网站做推广上海网站制作 公司

乐器产品主要在什么网站做推广,上海网站制作 公司,wordpress 百度主题,南通网站建设系统方案作用和用法在多线程对共享资源进行并发访问方面#xff0c;JDK提供了synchronized关键字来进行线程同步#xff0c;实现多线程并发访问的线程安全。synchronized的作用主要体现在三个方面#xff1a;(1)确保线程互斥地访问同步代码#xff1b;(2)保证共享变量的线程可见性JDK提供了synchronized关键字来进行线程同步实现多线程并发访问的线程安全。synchronized的作用主要体现在三个方面(1)确保线程互斥地访问同步代码(2)保证共享变量的线程可见性(3)禁止指令重排。其中(2)和(3)相当于volatile关键字的作用。synchronized可以用在代码的以下地方(1)静态方法将类对象自身作为monitor对象对该类所有使用了sychronized修饰的静态方法进行同步即任何时候只能存在一个线程在调用该类的使用了synchronized修饰的静态方法其他调用了该类的使用了synchronized修饰的静态方法的线程需要阻塞(2)普通成员方法使用类的对象实例作为monitor对象该类所有使用了synchronized修饰的成员方法在任何时刻只能被一个线程访问其他线程需要阻塞(3)代码块使用某个对象作为monitor对象通常为一个普通的private成员变量如private Object object new Object();这样所有使用了该object对象的同步块在任何时候只能存在一个线程访问。synchronized可以与monitor对象的waitnotifynotifyAll方法一起来使用实现线程之间的通信如实现生产者和消费者模型。其中多个线程共享一个monitor对象在线程持有synchronized锁时才能调用monitor的waitnotify或者notifyAll分别用于释放monitor锁阻塞休眠等待其他线程通知和唤醒其中一个阻塞休眠的线程让该线程去获取monitor锁通知所有阻塞休眠的线程去竞争monitor锁。synchronized使用方便无需显示地在应用代码中加锁和解锁只需在对应的方法或者代码块中使用synchronized关键字修饰即可由JVM自身实现自动地加锁和释放锁。synchronized修饰的范围越小线程并发度越高性能越好所以通常使用同步代码块而不是同步方法来缩小同步范围优化性能。实现原理JVM层面synchronized关键字是基于JVM提供的monitorenter和monitorexit字节码指令以及结合监视器monitor来实现的。由上面的分析可知synchronized关键字用在静态方法普通成员方法代码块中分别需要以类对象自身类的对象实例某个普通对象作为对应的monitor对象。由JVM的相关知识可知任何java类都需要编译成class字节码然后加载到JVM当中去执行。而在编译一个java类生成对应class字节码时当遇到sychronized关键字时会在sychronized关键字所修饰的方法或者代码块的开始处增加一个monitorenter字节码指令在方法或者代码块的结束处增加monitorexit字节码指令即使用monitorenter和monitorexit字节码指令包围该方法或者代码块对应的字节码。如下在类的成员方法中使用synchronized关键字反编译该类对应的class字节码文件在成员方法method对应的字节码周围使用了monitorenter和monitorexit字节码指令。monitorenter和monitorexit指令的作用为monitorenter的作用所有线程共享该同步代码和该对象关联的监视器monitor每个线程执行到monitorenter指令的时候会检查对应的monitor对象的计数是否为0是则当前线程成为该monitor对象的owner即锁住该monitor对象了并递增该计数为1之后该线程每调用一次使用了该monitor对象进行同步的方法计数加一(所以synchronized也是可重入的)其他线程检查到monitor对象的计数不为0则知道该monitor对象已经被其他线程持有锁住了故当前线程会阻塞直到该monitor的计数重新变为0则阻塞的线程们会继续竞争成为该monitor的owner从而可以访问同步代码。monitorexit的作用当持有该monitor对象的线程每执行完一个同步代码时(如对于成员方法如果该线程调用了多个使用sychronized修饰的成员方法则每个方法执行完执行一次monitor减一)将monitor的计数减一当monitor对象的计数递减到0时则当前线程不再持有该monitor对象其他阻塞的线程此时可以竞争成为该monitor的owner成功的线程可以访问同步代码。为什么monitor对象的waitnotifynotifyAll需要在synchronized同步代码里面使用呢首先需要理解以下概念每个对象关联一个监视器monitor每个监视器monitor都有一个该对象的锁(即计数是否为0为0则说明没有其他线程加锁)一个等待队列和一个同步队列wait方法释放对象锁然后进入等待队列notify和notifyAll方法从等待队列被唤醒放到同步队列去竞争该对象锁所以线程在执行waitnotifynotifyAll时需要依赖该监视器monitor即该线程成为该监视器的owner从而可以访问synchronized包围的同步代码这样才能有权访问该监视器对应的对象锁等待队列和同步队列。操作系统层面在操作系统层面synchronized是基于操作系统的Metux Lock来实现的而操作系统实现线程之间的切换是需要进行上下文切换的即从用户态切换到内核态所以这也是synchronized相对来说成本较高性能相对较低的原因。
http://www.pierceye.com/news/854644/

相关文章:

  • 简单的做图网站wordpress加密授权
  • 哪里做网站域名不用备案新华舆情监测平台
  • 品牌工厂网站建设qt 网站开发
  • xxx网站建设规划家庭服务网站的营销策略
  • 哪里可以做宝盈网站江门百度seo公司
  • 电子商务的网站建设名词解释如何建立官网
  • 网站建设维护外包群排名优化软件
  • 苏州专业建设网站镇江网站建设找思创网络
  • 长春网站排名提升seo关键词推广多少钱
  • 头条网站怎么做的在网站上放广告
  • 网站建设费的会计分录wordpress c博客
  • 网站开发语言字典使用apmserv本地搭建多个网站
  • 建网站费用记账北京时间网站建设
  • 兴化网站开发佛山营销网站建设联系方式
  • 安居客官网网站天津 网站设计制作公司
  • seo建站优化价格表中山网站建设品牌
  • wp网站源码聊城市住房和城乡建设局网站首页
  • 个人博客网站总结买东西的网站
  • 兰州新区小程序建站网站的漂浮广告怎么做
  • 用vs代码做网站线上拓客渠道有哪些
  • 微信网站界面如何免费创建自己的平台
  • 电商设计一般都是做什么潍坊网站seo外包
  • 大城怎么样做网站雄安建设工程信息网站
  • 郑州网站建设方案服务安全狗iis版删了以后 网站打不开
  • 忻州网站制作jsp小型网站开发代码
  • 如何外贸网站推广wordpress默认主题哪个好
  • 设计网站推荐提升审美网站建设的公司
  • 张浦专业做网站网站建设案例百度云
  • 佛山网站如何制作网站建设公司哪家强
  • 韩城市网站建设编程培训机构加盟哪家好