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

手机网站源码大全餐饮品牌网站建设

手机网站源码大全,餐饮品牌网站建设,祁东网站建设,北滘做网站文章目录 #x1f490;synchrosized的可重入特性关于死锁#xff1a;哲学家就餐问题#x1f4a1;如何避免/解决死锁 #x1f490;synchrosized的可重入特性 可重入特性#xff1a;当一个线程针对一个对象同时加锁多次#xff0c;不会构成死锁#xff0c;这样的特性称为… 文章目录 synchrosized的可重入特性关于死锁哲学家就餐问题如何避免/解决死锁 synchrosized的可重入特性 可重入特性当一个线程针对一个对象同时加锁多次不会构成死锁这样的特性称为可重入性 例如下图 为了防止上述死锁情况synchrosized 就引入了可重入性解决 线程在加锁时在这个锁对象内部它会记录是对哪个线程加了锁当对同一个线程再次进行加锁时就会判断该线程是不是同一个线程并且是否已经持有了锁如果已经有了锁那么也会重复进行加锁不会导致死锁现象 **那么问题就来了如果加两次锁在 }2 的地方是否应该解锁呢**答案不能释放锁 如果加了n次锁呢该怎么去释放呢 答案在锁对象中不仅会记录对哪个线程加了锁还会有一个计数器记录加锁的次数如果对同一个线程加锁多次那么每当执行完一个加锁的代码块时计数器就会减1一直到最后一个锁时才会释放锁 关于死锁 在Java中如果一个线程对同一个锁连续加锁两次不会造成死锁现象 如果两个线程两把锁每个线程都嵌套的加两个不同的锁就会造成死锁现象 例如让线程1先获取 lock1线程2获取 lock2然后在 thread1 的内部再尝试获取 lock2在 thread2 的内部再尝试获取 lock1 public static void main(String[] args) {//定义两把锁Object lock1 new Object();Object lock2 new Object();//让线程1嵌套获取两把锁Thread thread1 new Thread(() - {synchronized (lock1) {//此处睡眠很重要如果没有睡眠线程1可能就会一下子把两把锁都获取了就构不成死锁现象了try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}synchronized (lock2) {System.out.println(thread1加锁成功);}}});//让线程2嵌套获取两把锁Thread thread2 new Thread(() - {synchronized (lock2) {try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}synchronized (lock1) {System.out.println(thread2加锁成功);}}});thread1.start();thread2.start();}执行结果 3. n个线程m把锁也容易出现死锁问题例如哲学家就餐问题 哲学家就餐问题 死锁 是一个比较严重的bug那如何避免/解决死锁呢 如何避免/解决死锁 要想避免死锁就要先知道死锁是怎么形成的这样才能对症下药导致死锁的四个必要条件 1.互斥使用当线程1获取锁之后线程2也想获取同一把锁就会阻塞等待(锁的特性) 2.不可抢占当线程1已经获取到锁之后线程2不能强行抢占锁(锁的特性) 3.请求保持一个线程尝试获取多把锁(一个线程获取到锁1之后还想尝试获取锁2此时锁1也并未解锁)例如上面的嵌套加锁代码 4.循环等待线程获取锁时形成了环路例如上面哲学家同时拿起左边的筷子 第一点和第二点是锁的特性如果想要解决死锁就要破坏第三点和第四点 对于第三点来讲只要避免两把不同的锁嵌套获取即可 对于第四点来讲可以约定给所有的锁进行一个编号规定所有的线程只能按顺序先获取编号小的锁然后获取编号大的例如 以上虽然时嵌套加锁的但是并未形成环路得到lock1锁的线程执行未获得lock1的线程阻塞等待并且也无法获得lock2
http://www.pierceye.com/news/582277/

相关文章:

  • 网站投资多少钱制作做的网站如何上传网上
  • 沈阳自助建站模板网站建设想法
  • 湖南岳阳网站建设公司黄页顺企网怎样不让网站被收录
  • 有没有专门做翻译的网站安徽建设工程信息网招标公告
  • 保险咨询网站留电话中国十大网络公司排行榜
  • 领手工在家做的网站2019网页设计与实现论文
  • 兰州微信信息平台网站建设绍兴本地网站建设
  • 关于旅游网站策划书千锋前端培训多少钱
  • 温州网站建设结构做代练网站能备案
  • 零基础学习做网站第三方装修评估公司
  • 基础微网站开发动态网站彩票投注员做啥的
  • 西安做网站设计公司爱做网站免费版
  • 效果图网站接单重庆一般建一个网站需要多少钱
  • 网站建设征求意见稿辅料企业网站建设费用
  • 上海网站建设公司服务沅江网站制作
  • 公司网站开发费用计入什么科目虚拟主机怎么建网站
  • 天津网站建设技术网页设计与制作教程版徐洪亮课后答案
  • 旅游网站建设方案简介用asp做的网站打开页面很慢
  • 做影视网站 片源从哪里来做自媒体的上那些网站
  • 邢台网站开发百度云 做网站
  • 淘宝优惠劵网站建设wordpress主题 简洁
  • 自己做电影资源网站揭阳新闻最新消息
  • 北碚免费建站哪家做得好佛山网站建设设计
  • 怎么做网站拍卖的那种wordpress主题搜索图标
  • 三亚网站建设平台查数据的权威网站
  • html网站制作答辩ppt网站备份和备案的区别
  • 网站开发需要工具免费的ps软件
  • 常州网站建设优质商家重庆互联网怎么样
  • 做网站发广告动漫网页设计报告
  • 求职招聘网站建设投标书沈阳网站建设的公司哪家好