多线程共享数据(多个线程共同访问相同的数据),需要进行数据同步,保证同一数据、同一时刻只能被一个线程访问。 使用同步是为了防止多个线程同一时刻对同一数据进行读写,如果对同一数据数据都只进行读操作、不进行修改,则不必使用同步。 以售票为例 不使用同步 public class SaleTicketTh ...
分类:
编程语言 时间:
2020-03-22 12:27:00
阅读次数:
99
当多条语句(线程)在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行,导致共享数据的错误。这样就是线程的安全问题。 解决线程安全的方式有两种: 1.synchronized同步机制 2.Lock锁 一、synchronized同步机制 1.同步代码块 ...
分类:
编程语言 时间:
2020-02-29 17:29:51
阅读次数:
83
一、多线程出现的安全问题: 1、问题的原因: 多个线程执行的不确定性引起执行结果的不稳定。当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行,导致共享数据的错误。2、解决的办法: 对多条操作共享数据的语句,只能让一个线程都执行完,在执行过程中 ...
分类:
编程语言 时间:
2020-01-16 23:47:23
阅读次数:
71
【JVM 知识体系框架总结】 https://www.cnblogs.com/mousycoder/p/11612448.html JVM 内存分布 线程共享数据区:方法区->类信息,静态变量堆->数组对象 线程隔离区虚拟机栈-> 方法本地方法栈->本地方法库 native 堆、程序计数器 JVM ...
分类:
其他好文 时间:
2019-10-04 09:14:22
阅读次数:
85
JVM 内存分布 线程共享数据区: 方法区 类信息,静态变量 堆 数组对象 线程隔离区 虚拟机栈 方法 本地方法栈 本地方法库 native 堆、程序计数器 JVM 运行数据 程序计数器 线程隔离 ,比较小的内存空间,当前线程所执行的字节码的行号 线程是一个独立的执行单元,由 CPU执行 唯一没有 ...
分类:
其他好文 时间:
2019-09-30 14:48:28
阅读次数:
73
并发与锁 a. 多个线程共享数据的时候,如果数据不进行保护,那么可能出现数据不一致现象,使用锁,信号量、条件锁 b. c.互斥锁1. 互斥锁,是使用一把锁把代码保护起来,以牺牲性能换取代码的安全性,那么Rlock后 必须要relase 解锁 不然将会失去多线程程序的优势2. 互斥锁的基本使用规则: ...
分类:
编程语言 时间:
2019-09-10 01:05:30
阅读次数:
125
多个线程行为一致共同操作一个数据,最经典的例子就是卖票 2.多个线程行为不一致,共同操作一个数据 如果每个线程执行的代码不同这个时候就需要调用不同的Runnable对象,有两种方法实现这个Runnable对象之间的数据共享 ,将共享数据封装在另外一个对象中,然后将这些对象逐一传递给各个Runnabl ...
分类:
编程语言 时间:
2019-06-01 21:39:01
阅读次数:
139
1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈 ...
分类:
编程语言 时间:
2019-05-09 22:05:18
阅读次数:
123
同步 ? 线程安全问题的根本原因: A:存在多线程环境 B:存在两个或两个以上的线程对象共享着一个资源(多个线程共享数据) C:有多条语句操作共享数据? 同步代码块: synchronized( 锁对象 ){ 需要同步的代码; } 注 1.任意一个对象都可以作为锁对象 (凡是对象的内部都维护了一个状 ...
分类:
编程语言 时间:
2018-10-06 15:37:31
阅读次数:
154
加同步代码:加了同步代码后,线程进同步判断锁,获取锁,出同步释放锁,导致了线程运行速度的下降 方式一:同步代码块 解决线程安全问题,java程序提供了线程同步技术 synchronized(任意对象){ 线程要操作的共享数据 } 任意对象:通俗来讲叫同步锁或者对象监视器 同步的作用:保证线程的安全性 ...
分类:
编程语言 时间:
2018-08-28 00:58:32
阅读次数:
136