美文网首页
多线程同步代码块

多线程同步代码块

作者: menmo_O | 来源:发表于2017-12-20 14:58 被阅读0次

通过售票案例分析,发现打印出0、-1、-2等错票。
多线程的运行出现了安全问题。

问题的原因:
当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,
另一个线程参与进来执行,导致共享数据的错误。

解决办法:
对多条操作共享数据的语句,只能让一个线程都执行完,在执行过程中,其他线程不可以参与执行。

java对于多条线程的安全问题提供了专业的解决办法。
就是同步代码块
synchronize(对象)
{
需要被同步的代码
}
对象如同锁,持有锁的线程可以在同步中执行。
没有持有锁的线程即使获取CPU的执行权也进不去,没有获取锁。

使用同步的前提:
1,必须要有两个或者两个以上的线程。
2,必须是多个线程使用同一个锁。

必须保证同步中只能有一个线程在运行。

优点:解决了多线程的安全问题。
弊端:多个线程都需要判断锁,较为消耗资源。

相关文章

  • Java之同步代码块

    Java多线程的同步代码块 synchronized(对象){ 需要同步的代码 } 同步代码块可以解决安全...

  • 代码块

    一、代码块 根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解)。 常见代...

  • 多线程同步代码块

    通过售票案例分析,发现打印出0、-1、-2等错票。多线程的运行出现了安全问题。 问题的原因:当多条语句在操作同一个...

  • Java中解决多线程数据安全问题

    同步代码块 基本语句 synchronized (任意对象) {操作共享代码} 代码示例 优缺点: 解决了多线程的...

  • JUC学习笔记三

    JUC学习笔记三 用于解决多线程同步问题的方式 隐式锁(synchronized) 同步代码块 同步方法 显式锁(...

  • Java多线程同步2——同步方法

    java多线程同步除了上文说到的同步代码块,还可以使用同步方法,还是银行取钱的那个问题,代码如下 public c...

  • Java并发之synchronized

    Java多线程同步关键词是常用的多线程同步手段。它可以修饰静态类方法,实例方法,或代码块。修饰static静态方法...

  • 同步锁Lock

    用于解决多线程安全问题的方式:synchronized 隐式锁 同步代码块 同步方法 jdk1.5后新增 同步锁...

  • java解决多线程安全的方式

    解决多线程安全问题的方式(加锁)包含以下几种: synchronized关键字:又包含同步代码块,同步方法 Loc...

  • 4多线程-代码安全,同步代码块

    多次启动一个线程是非法的 线程安全问题的现象 线程安全问题产生的原因: 多个线程在操作共享的数据包。 操作共享数据...

网友评论

      本文标题:多线程同步代码块

      本文链接:https://www.haomeiwen.com/subject/qqpgwxtx.html