java 同步块原理_Java同步代码块和同步方法原理与应用案例详解
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同步代码块和同步方法原理与应用案例详解相关推荐
- java类静态初始化_Java静态代码块和类初始化、实例初始化过程
1. 静态代码块 静态代码块:定义在类中方法外,使用static修饰 ①可以为类变量(静态变量)初始化 ②静态代码块在第一次使用这个类之前执行,即在类初始化时执行,且只执行一次 ③若有多个静态代码块, ...
- java 读者写者_Java实现生产者消费者问题与读者写者问题详解
1.生产者消费者问题 生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品.解决生产者/消费者问题的方法可分为两 ...
- python爬虫代码实例源码_python爬虫及案例详解(附代码)
安装三大库 1.requests 2.BeautifulSoup 3.lxml 有的网站做了相应的反爬虫,不能用普通方法爬取网站数据. 这里我用python爬取了几个网站的数据,分别存入csv文件,m ...
- java 线程 状态 图_Java线程中的生命周期和状态控制图文详解
这篇文章主要介绍了Java线程的生命周期和状态控制,需要的朋友可以参考下 一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于 ...
- java equals重写原则_java中为何重写equals时必须重写hashCode方法详解
前言 大家都知道,equals和hashcode是java.lang.Object类的两个重要的方法,在实际应用中常常需要重写这两个方法,但至于为什么重写这两个方法很多人都搞不明白. 在上一篇博文Ja ...
- java 取对象的类_Java中通过Class类获取Class对象的方法详解
前言 本文主要给大家介绍的是关于Java通过Class类获取Class对象的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 阅读API的Class类得知,Class 没有公共 ...
- java的连接 初始化_java类从加载、连接到初始化过程详解
Java代码在编译后会转化成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化成汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. 类加载 ...
- java中控制反转_Java如何利用IOC控制反转的三种设计模式详解
这篇文章主要为大家详细介绍了Java使用IOC控制反转的三种设计模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 对于许多开发人员来说,控制反演(IoC)都是一个模糊的概念,因为他们在现实世界中 ...
- 【Java基础】前端传一个数组或者集合后台怎么接受(案例详解)
[辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...
- java同步方法完成案例_Java同步代码块和同步方法原理与应用案例详解
本文实例讲述了java同步代码块和同步方法.分享给大家供大家参考,具体如下: 一 点睛 所谓原子性WOmoad:一段代码要么执行,要么不执行,不存在执行一部分被中断的情况.言外之意是这段代码就像原子一 ...
最新文章
- Kong APIGW — 基本操作
- 最短路径-Dijkstra算法与Floyd算法
- SpringBoot ElasticSearch 全文搜索
- Python基础知识(第十一天)
- windows 命令行创建用户
- php attr,PHP DOMAttr isId()用法及代码示例
- python3 yield 大文件_详解Python3中yield生成器的用法
- 在MySQL中使用游标和for循环
- Leetcode每日一题:33.search-in-rotated-sorted-array(搜索旋转排序数组)
- 高中生入门计算机编程,高中生必看:入门学软件编程,看这三点...
- 计算机语言论文标准范文,计算机语言论文大纲范文模板 计算机语言论文提纲怎么写...
- excel表格如何转换成word表格_如何把EXCEL表格转成WORD表格?
- 微信公众号实现人脸识别功能
- 从零学习node爬虫
- 彼得德鲁克管理理念摘写
- 回归分析中15个统计量解释|Eviews回归结果的理解
- 百度地图android wear,Android Wear多款搜狗地图标注内置
- Windows睡眠,CPU风扇仍然运转的问题
- java odbc excel_利用odbc连接excel,解决中文乱码问题。
- Python函数及练习题
热门文章
- 极简代码(三)—— 向量加法
- 重温马尔科夫随机过程
- 0基础学python有多难-0基础学Python有多难?
- 想自学python看哪位的视频比较好-python学习视频好的有哪些
- python是什么课程-python是什么(python是什么课程)
- python爬虫-Python爬虫学习之(一)| 从零开始
- 为什么都建议学java而不是python-现在学Python还是Java好呢?
- python简单程序实例-Python简单基础小程序的实例代码
- python是什么课程-python课程体系是怎么样的?
- python和java选择哪个-Python和Java该如何选择?选哪个好?