Java同步代码块和同步方法原理与应用案例详解

发布于 2020-8-7|

复制链接

摘记: 本文实例讲述了Java同步代码块和同步方法。分享给大家供大家参考,具体如下:一 点睛所谓原子性:一段代码要么执行,要么不执行,不存在执行一部分被中断的情况。言外之意是这段代码就像原子一样,不可拆分。同 ..

本文实例讲述了Java同步代码块和同步方法。分享给大家供大家参考,具体如下:一 点睛所谓原子性:一段代码要么执行,要么不执行,不存在执行一部分被中断的情况。言外之意是这段代码就像原子一样,不可拆分。同步的含义:多线程在代码执行的关键点上,互通消息,相互协作,共同把任务正确的完成。同步代码块语法:

```java

synchronized(对象)

{

需要同步的代码块;

}

```

同步方法语法:

```java

访问控制符 synchronized 返回值类型方法名称(参数)

{

需要同步的代码;

}

```

二 同步代码块完成卖票功能1 代码

```java

public class threadSynchronization

{

public static void main( String[] args )

{

TestThread t = new TestThread();

// 启动了四个线程,实现资源共享

new Thread( t ).start();

new Thread( t ).start();

new Thread( t ).start();

new Thread( t ).start();

}

}

class TestThread implements Runnable

{

private int tickets = 5;

@Override

public void run()

{

while( true )

{

synchronized( this )

{

if( tickets 2 运行

Thread-0出售票5

Thread-3出售票4

Thread-3出售票3

Thread-2出售票2

Thread-2出售票1

三 同步方法完成买票功能1 代码

```java

public class threadSynchronization

{

public static void main( String[] args )

{

TestThread t = new TestThread();

// 启动了四个线程,实现资源共享的目的

new Thread( t ).start();

new Thread( t ).start();

new Thread( t ).start();

new Thread( t ).start();

}

}

class TestThread implements Runnable

{

private int tickets = 5;

public void run()

{

while( tickets > 0 )

{

sale();

}

}

public synchronized void sale()

{

if( tickets > 0 )

{

try

{

Thread.sleep( 100 );

}

catch( Exception e )

{

e.printStackTrace();

}

System.out.println( Thread.currentThread().getName() + "出售票"

+ tickets );

tickets -= 1;

}

}

}

```

2 运行

Thread-0出售票5

Thread-0出售票4

Thread-3出售票3

Thread-2出售票2

Thread-1出售票1

java 同步块原理_Java同步代码块和同步方法原理与应用案例详解相关推荐

  1. java类静态初始化_Java静态代码块和类初始化、实例初始化过程

    1. 静态代码块 静态代码块:定义在类中方法外,使用static修饰 ①可以为类变量(静态变量)初始化 ②静态代码块在第一次使用这个类之前执行,即在类初始化时执行,且只执行一次 ③若有多个静态代码块, ...

  2. java 读者写者_Java实现生产者消费者问题与读者写者问题详解

    1.生产者消费者问题 生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品.解决生产者/消费者问题的方法可分为两 ...

  3. python爬虫代码实例源码_python爬虫及案例详解(附代码)

    安装三大库 1.requests 2.BeautifulSoup 3.lxml 有的网站做了相应的反爬虫,不能用普通方法爬取网站数据. 这里我用python爬取了几个网站的数据,分别存入csv文件,m ...

  4. java 线程 状态 图_Java线程中的生命周期和状态控制图文详解

    这篇文章主要介绍了Java线程的生命周期和状态控制,需要的朋友可以参考下 一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于 ...

  5. java equals重写原则_java中为何重写equals时必须重写hashCode方法详解

    前言 大家都知道,equals和hashcode是java.lang.Object类的两个重要的方法,在实际应用中常常需要重写这两个方法,但至于为什么重写这两个方法很多人都搞不明白. 在上一篇博文Ja ...

  6. java 取对象的类_Java中通过Class类获取Class对象的方法详解

    前言 本文主要给大家介绍的是关于Java通过Class类获取Class对象的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 阅读API的Class类得知,Class 没有公共 ...

  7. java的连接 初始化_java类从加载、连接到初始化过程详解

    Java代码在编译后会转化成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化成汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. 类加载 ...

  8. java中控制反转_Java如何利用IOC控制反转的三种设计模式详解

    这篇文章主要为大家详细介绍了Java使用IOC控制反转的三种设计模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 对于许多开发人员来说,控制反演(IoC)都是一个模糊的概念,因为他们在现实世界中 ...

  9. 【Java基础】前端传一个数组或者集合后台怎么接受(案例详解)

    [辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...

  10. java同步方法完成案例_Java同步代码块和同步方法原理与应用案例详解

    本文实例讲述了java同步代码块和同步方法.分享给大家供大家参考,具体如下: 一 点睛 所谓原子性WOmoad:一段代码要么执行,要么不执行,不存在执行一部分被中断的情况.言外之意是这段代码就像原子一 ...

最新文章

  1. Kong APIGW — 基本操作
  2. 最短路径-Dijkstra算法与Floyd算法
  3. SpringBoot ElasticSearch 全文搜索
  4. Python基础知识(第十一天)
  5. windows 命令行创建用户
  6. php attr,PHP DOMAttr isId()用法及代码示例
  7. python3 yield 大文件_详解Python3中yield生成器的用法
  8. 在MySQL中使用游标和for循环
  9. Leetcode每日一题:33.search-in-rotated-sorted-array(搜索旋转排序数组)
  10. 高中生入门计算机编程,高中生必看:入门学软件编程,看这三点...
  11. 计算机语言论文标准范文,计算机语言论文大纲范文模板 计算机语言论文提纲怎么写...
  12. excel表格如何转换成word表格_如何把EXCEL表格转成WORD表格?
  13. 微信公众号实现人脸识别功能
  14. 从零学习node爬虫
  15. 彼得德鲁克管理理念摘写
  16. 回归分析中15个统计量解释|Eviews回归结果的理解
  17. 百度地图android wear,Android Wear多款搜狗地图标注内置
  18. Windows睡眠,CPU风扇仍然运转的问题
  19. java odbc excel_利用odbc连接excel,解决中文乱码问题。
  20. Python函数及练习题

热门文章

  1. 极简代码(三)—— 向量加法
  2. 重温马尔科夫随机过程
  3. 0基础学python有多难-0基础学Python有多难?
  4. 想自学python看哪位的视频比较好-python学习视频好的有哪些
  5. python是什么课程-python是什么(python是什么课程)
  6. python爬虫-Python爬虫学习之(一)| 从零开始
  7. 为什么都建议学java而不是python-现在学Python还是Java好呢?
  8. python简单程序实例-Python简单基础小程序的实例代码
  9. python是什么课程-python课程体系是怎么样的?
  10. python和java选择哪个-Python和Java该如何选择?选哪个好?