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

定制型网站一般价格水利厅网站集约化建设

定制型网站一般价格,水利厅网站集约化建设,苏州做网站0512jinyan,湖北建设执业注册管理中心网站在 Java 中,每一个对象都可以作为一把锁,synchronized 通过获取对象头中的锁标志位来实现同步。当一个线程获取到对象的锁后,其他线程就无法再获取该锁,只能等待获取到锁的线程释放锁之后才能继续执行被 synchronized 修饰的代码块…

在 Java 中,每一个对象都可以作为一把锁,synchronized 通过获取对象头中的锁标志位来实现同步。当一个线程获取到对象的锁后,其他线程就无法再获取该锁,只能等待获取到锁的线程释放锁之后才能继续执行被 synchronized 修饰的代码块或方法。synchronized 本质上就是 Java 语言层面实现的一种互斥锁

背景

为了增加并发度,降低锁的粒度,增加多把锁;

一间大屋子有两个功能:睡觉、学习,互不相干。 现在小南要学习,小女要睡觉,但如果只用一间屋子(一个对象锁)的话,那么并发度很低 解决方法是准备多个房间(多个对象锁)

package cn.itcast.n4;import static cn.itcast.n2.util.Sleeper.sleep;import cn.itcast.n2.util.Sleeper;
import lombok.extern.slf4j.Slf4j;public class TestMultiLock {public static void main(String[] args) {BigRoom bigRoom = new BigRoom();new Thread(() -> {bigRoom.study();},"小南").start();new Thread(() -> {bigRoom.sleep();},"小女").start();}
}@Slf4j(topic = "c.BigRoom")
class BigRoom {private final Object studyRoom = new Object();private final Object bedRoom = new Object();public void sleep() {synchronized (bedRoom) {log.debug("sleeping 2 小时");Sleeper.sleep(2);}}public void study() {synchronized (studyRoom) {log.debug("study 1 小时");Sleeper.sleep(1);}}}

死锁问题

如果出现一个线程同时获取多把锁的情况,而且不是按照相同的顺序加锁的,可能会出现死锁问题

package cn.itcast.n4.deadlock;import lombok.extern.slf4j.Slf4j;import static cn.itcast.n2.util.Sleeper.sleep;@Slf4j(topic = "c.TestDeadLock")
public class TestDeadLock {public static void main(String[] args) {test1();}private static void test1() {Object A = new Object();Object B = new Object();Thread t1 = new Thread(() -> {synchronized (A) {log.debug("lock A");sleep(1);synchronized (B) {log.debug("lock B");log.debug("操作...");}}}, "t1");Thread t2 = new Thread(() -> {synchronized (B) {log.debug("lock B");sleep(0.5);synchronized (A) {log.debug("lock A");log.debug("操作...");}}}, "t2");t1.start();t2.start();}
}

定位

解决

按照相同的顺序加锁

http://www.dtcms.com/a/549676.html

相关文章:

  • 基于SpringBoot+Vue的助农扶贫平台(AI问答、WebSocket实时聊天、快递物流API、协同过滤算法、Echarts图形化分析、分享链接到微博)
  • 5-27 WPS JS宏数组元素添加删除应用2
  • 网站字体样式wordpress iis伪静态
  • YouBallin:重塑去中心化创作者平台的声誉体系
  • 云手机存在的意义是什么
  • 360免费wifi安全吗网站建设html代码优化
  • 长安大学门户网站是谁给做的石墨网站开发
  • xtuoj Digit String
  • 【代码随想录算法训练营——Day53】图论——110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长
  • 【代码审计】ECShop_V4.1.19 SQL注入漏洞 分析
  • 桐城市住房和城乡建设局网站广东网广东网站建设
  • 网站后台与前台家具网站开发设计任务书与执行方案
  • 网站的文案物流的网站模板
  • ESP32在arduino环境下的离线安装 -- 理论上多个版本都有效
  • Windows的mklink创建符号链使用方法
  • 小清新网站风格正规接单赚佣金的平台
  • 应用APP开发程序编辑中的数据加密和解密以及签名使用解释技巧
  • Spring Boot3零基础教程,Function 各种写法,笔记97
  • 好文与笔记分享 A Survey of Context Engineering for Large Language Models(上)
  • 贵阳营销型网站建设wordpress用思源黑体
  • ksycopg2实战:Python连接KingbaseES数据库的完整指南
  • mediwiki 做网站做网站有发展吗
  • 如何做网站服务器映射计算机专业学做网站吗
  • 拟人AI GoCap:用机器学习打造真实玩家体验
  • cocos里UV坐标显示取值变化异常问题
  • 【Python】包管理神器-uv
  • 设计模式——抽象工厂方法(abstract factory)
  • 追剧狂人网页入口 - 免费影视在线观看网站
  • 以太网多参量传感器:工业物联网时代的安全监测革新
  • wordpress整站模板php 怎么做视频网站