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

上海网站建设千元漂亮网站被降权重新做网站

上海网站建设千元漂亮,网站被降权重新做网站,有好看图片的软件网站模板,2022年最新血糖标准权威发布目录 1. 问题引入 2.死锁问题的概念和原因 3. 解决死锁问题 1. 问题引入 在学习死锁之前, 我们先观察下面的代码能否输出正确的结果: 运行程序, 能正常输出结果: 这个代码只管上看起来, 好像是有锁冲突的, 此时的 locker 对象已经是加锁的状态, 在尝试对 locker 加锁, 不应该… 目录 1. 问题引入 2.死锁问题的概念和原因 3. 解决死锁问题 1. 问题引入 在学习死锁之前, 我们先观察下面的代码能否输出正确的结果: 运行程序, 能正常输出结果: 这个代码只管上看起来, 好像是有锁冲突的, 此时的 locker 对象已经是加锁的状态, 在尝试对 locker 加锁, 不应该会出现阻塞问题吗? 其实, 问题的关键是,这两次加锁, 其实是在同一个线程上进行的.  由于是同一个线程, 此时锁对象就知道了第二次加锁的线程,  第二次加锁操作就可以直接放行通过, 不会出现阻塞.  这个特性称为 可重入.  使用可重入锁, 可以避免代码出现死锁问题, 如果使用的不是可重入锁, 就会出现死锁问题. 2.死锁问题的概念和原因 Java多线程中的死锁问题是指两个或多个线程互相持有对方所需的资源而无法继续执行的情况。这种情况下线程无法释放已经占有的资源也无法获取自己所需的资源导致程序无法继续执行下去。 通常发生死锁问题需要满足以下四个条件 互斥条件Mutual exclusion至少有一个资源同时只能被一个线程占用。请求与保持条件Hold and wait线程至少已经占有一个资源并且正在请求另一个被其他线程占用的资源。不可剥夺条件No preemption已经分配给一个线程的资源不能被强制剥夺。循环等待条件Circular wait存在一个线程链每个线程都在等待下一个线程所占有的资源。 死锁的例子: 线程1获取到锁A, 线程2获取到锁B, 接下来, 线程1尝试获取锁 B, 线程2尝试获取锁A, 此时出现了死锁问题:   package thread;public class ThreadDemo22 {public static void main(String[] args) {Object A new Object();Object B new Object();Thread t1 new Thread(()- {synchronized (A) {// sleep 是为了t2时间, 让t2也能拿到 Btry {Thread.sleep(1000);}catch (InterruptedException e) {e.printStackTrace();}//尝试获取B, 并没有释放 Asynchronized (B) {System.out.println(t1拿到了两把锁);}}});Thread t2 new Thread(()-{synchronized (B) {// sleep 是给t1时间, 让t1能拿到 Atry {Thread.sleep(1000);}catch (InterruptedException e) {e.printStackTrace();}//尝试获取A, 并没有释放 Bsynchronized (A) {System.out.println(t2拿到了两把锁);}}});t1.start();t2.start();} } 程序没有任何输出结果: 3. 解决死锁问题 为了避免死锁问题可以采取以下策略 避免使用多个锁尽量减少使用多个锁如果必须使用多个锁确保获取锁的顺序是一致的以减少死锁的可能性。加锁顺序多个线程获取锁的顺序要保持一致避免出现循环等待条件。加锁时限在获取锁的时候设置超时时间如果一段时间内没有获取到锁就放弃当前的操作释放已经持有的锁避免长时间等待导致死锁。死锁检测通过监控线程的状态和资源的使用情况及时检测并解决潜在的死锁问题。 对于死锁例子, 我们可以使两个线程的取锁顺序保持一致: package thread;public class ThreadDemo22 {public static void main(String[] args) {Object A new Object();Object B new Object();Thread t1 new Thread(()- {synchronized (A) {// sleep 是为了t2时间, 让t2也能拿到 Btry {Thread.sleep(1000);}catch (InterruptedException e) {e.printStackTrace();}//尝试获取B, 并没有释放 Asynchronized (B) {System.out.println(t1拿到了两把锁);}}});Thread t2 new Thread(()-{synchronized (A) {// sleep 是给t1时间, 让t1能拿到 Atry {Thread.sleep(1000);}catch (InterruptedException e) {e.printStackTrace();}//尝试获取A, 并没有释放 Bsynchronized (B) {System.out.println(t2拿到了两把锁);}}});t1.start();t2.start();} }
http://www.zqtcl.cn/news/571166/

相关文章:

  • 培训好吗网站建设wordpress手游
  • 元典科技网站建设网页设计制作图片页面
  • 网站设置什么意思无代码搭建平台
  • 织梦做的网站后台登录做网站购买域名
  • 哈尔滨网站关键词优化排名合江做网站
  • 手机网站自动适配旅游网络营销方案
  • 敦化网站开发黔东南购物网站开发设计
  • 建设一个网站 需要提供什么如何免费推广自己的网站
  • 佛山企业网站制作公司中国互联网企业100强榜单
  • 买了域名就可以做网站怎么创造游戏软件
  • 广东广州电脑个人建站徐州网站排名公司
  • 网站优化 流量做网站对企业有什么好处
  • 建设机械网站制作人工智能工程师月薪多少
  • wordpress 百度站长沈阳app开发公司哪家好
  • 做网站平台公司网站建设硬件环境
  • 可视化编辑建站平台新密市城乡建设局网站
  • 电子商务的网站的建设内容wordpress主题 微软
  • 什么软件可以做动画视频网站网站的按钮怎么做 视频
  • 饰品做商城网站模式17网站一起做网店新塘
  • 微信做的地方门户网站做设计的平台
  • 旅游网站建设国内外现状安卓开发软件安装教程
  • 网站建设必备网站自助建设
  • 杭州免费自助建站模板辽宁建设工程信息网为什么打不开
  • sdcms网站源码百度怎么免费做网站
  • 图书馆网站参考咨询建设wordpress安装500
  • 详细描述建设网站wordpress 子页面
  • 做公司网站推广如何快速推广
  • 给期货交易类做网站违法吗青海企业网站制作
  • 成都网站模板购买一站式营销型网站建设服务
  • wordpress建站优势做网站认证对网站有什么好处