Java多线程的同步代码块

synchronized(对象){

需要同步的代码

}

同步代码块可以解决安全问题的根本原因在于那个对象快上,这个对象如同锁的功能。

多个线程需要同一个锁,才能锁的住,所以这个对象需要在run()方法外面声明。

同步的特点:1,多线程,2,多线程使用同一个锁 3,能解决线程安全的问题。

同步的弊端:当线程很多时,其他线程会等待正在执行的线程执行完毕,这样会浪费资源,

降低CUP的使用效率。

虽然synchronized可以实现锁的功能,但是为了更清晰的表达如何加锁和解锁,JDK5以后提供了

一个新的锁对象,lock

Lock

void lock (); 获取锁

void unlock();释放锁

Reentrantlock 是lock的实现类。

lock loc=new Reentrantlock ();

try{

loc.lock();{

// 要锁的代码

}

finally{

loc.unlock();

}

同步的弊端:效率低,如果出现了嵌套,就容易出现死锁。

死锁:2个或2个以上的线程在争夺资源中,发生了相互等待的现象。

死锁举例:

flag =1;

public void run (){

if( flag){

synchronized(A){

synchronized(B);

}

}

else {

synchronized(B){

synchronized(A);

}

}

}

}

java同步代码块作用_Java之同步代码块相关推荐

  1. java 代码块 作用_Java核心(三):代码块的作用

    Java中用{ }括起来的代码段就是代码块,他分为如下几种类型 位置 作用 局部代码块 在方法当中使用,作用是控制变量的生命周期. 局部代码块的变量,只能在代码块内部使用,在执行结束后会被Java回收 ...

  2. java类与对象作用_Java类与对象

    ●类和对象的关系: 一:类是对同一类事物(对象)的抽象,对象实际存在的该类的各种实体. 二:面向对编程的核心:找合适的对象来做合适的事. 三:Java中找到对象: 1):sun自己定义好的类,必须知道 ...

  3. java 面试什么是类_Java 面试题代码类收集

    long temp=(int)3.9; System.out.println(temp); temp%=2; System.out.println(temp); 3 1 View Code Java里 ...

  4. java程序运行缓慢原因_Java 很普通的代码执行很慢

    大家好,我们生产系统上面现在有一个接口,这个接口里面的代码有的时候运行很慢,后来我把代码分成了好几段,每段代码前后都加了开始时间和结束时间.今天下午 2020/4/7 14:48:00 的时候,运维找 ...

  5. java代码中 作用_Java利用开发中代码生成工具的作用

    Java利用开发中代码生成工具的作用 2010-6-5文字大小:大中小 近来,随着各种代码生成工具的不断涌现(如SpringSource的Spring Roo.Skyway Builder Commu ...

  6. java static 块作用_java static块有什么具体的作用和注意事项?说具体点

    展开全部 在Java语言中,static表示"全局"或者"静态"的62616964757a686964616fe4b893e5b19e3133333035346 ...

  7. java同步和异步的区别_java中同步与异步的区别是什么?表现在哪里?

    上次已经为大家介绍过java多线程的同步与异步,为大家详细分析了这两者的基本概念,今天再来详细的解析一下这两者之间的区别,并且它们的表现也是不同的,一起来了解一下吧. 首先,他们最大的区别是,同步需要 ...

  8. java同步和异步的区别_java中同步与异步区别是什么

    一.同步与异步概念:(推荐:java视频教程) 1.同步:所有的操作都做完,才返回给用户.这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行 ...

  9. java的复合语句的作用_Java复合语句的使用方法详解

    与 C 语言及其他语言相同, Java 语言的复合语句是以整个块区为单位的语句,所以又称为块语句.下面我们来看看有关复合语句的使用方法和实例. 复合语句由开括号"{"开始,闭括号& ...

  10. java volatile关键字的作用_java volatile关键字作用及使用场景详解

    1. volatile关键字的作用:保证了变量的可见性(visibility).被volatile关键字修饰的变量,如果值发生了变更,其他线程立马可见,避免出现脏读的现象.如以下代码片段,isShut ...

最新文章

  1. 3*3卷积核 5*5卷积核到底有多大区别
  2. 无监督学习:无监督降维
  3. 小记 cin/get/getline
  4. 人受失败后多久可以做第二次_做完皮秒多久可以用自己的护肤产品、过来人分享皮秒后怎么护肤?...
  5. Linux服务器查看日志方法小结
  6. 2021年还能用的13款完全免费的Office插件整理(含功能详细介绍)
  7. 史上最全ActiveX控件下载大全
  8. 批量给多个 Excel 工作薄文件中插入新的工作表 Sheet
  9. Unity Remote5 使用
  10. html页面如何嵌入cms,制作好的网页模板如何放入网站CMS中?
  11. Dynamic Head: Unifying Object Detection Heads with Attentions
  12. 使用IBM SPSS快速对数据进行分组
  13. 【转】超级珍贵的卤水秘方大全!
  14. sql强化演练( goods 表练习)—04
  15. (转)工作是一种本能?
  16. 乐学python公众号_乐的解释|乐的意思|汉典“乐”字的基本解释
  17. 博客园去除个人博客页面广告
  18. 我眼中的光明·第一周
  19. 使用Idea下载源码报Cannot Download Sources
  20. 八种常见的防盗链方法总结及分析

热门文章

  1. linux下lex词法分析器,Lex词法分析器
  2. 20130830sqlplus使用及联机文档
  3. 操盘手教你抓涨停的办法
  4. cs229吴恩达机器学习课件
  5. Mac OS 终端命令失效
  6. java代码注释规范
  7. 1500_1763 全球统一 伊比利亚 俄罗斯 西欧
  8. 证件照电子版怎么做?这几个软件能帮你
  9. pdf用什么软件编辑最方便
  10. Autodesk HSMWorks Ultimate 2019 Crack 破解版