前言: 一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在Java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池等待队列 中)。 取到锁后,他就开始执行同步代码(被synch ...
分类:
编程语言 时间:
2020-03-24 23:11:43
阅读次数:
90
ReentrantLock类 在JDK1.5中,新增了 ReentrantLock,相比 synchronized 在扩展功能上更加强大,比如具有嗅探锁定、多路分支通知等功能。 示例: ...
分类:
编程语言 时间:
2020-03-24 23:09:26
阅读次数:
84
ThreadLocal和InheritableThreadLocal的使用 ...
分类:
编程语言 时间:
2020-03-24 18:51:49
阅读次数:
61
join的作用 join的作用是等待线程对象销毁。 方法join 的作用是使所属的线程对象 x 正常执行 run() 方法中的任务,而使当前线程 z 进行无限期的阻塞,等待线程 x 销毁之后再继续执行当前线程 z 后面的代码。 注意: 如果方法 join() 与 interrupt() 方法相遇,则 ...
分类:
编程语言 时间:
2020-03-24 09:19:27
阅读次数:
79
本文将为各位带来 Java 阻塞队列相关只是。关注我的公众号「Java面典」了解更多 Java 相关知识点。 线程间数据共享 Java 里面进行多线程通信的主要方式就是共享内存的方式,共享内存主要的关注点有两个:可见性和有序性原子性。Java 内存模型(JMM)解决了可见性和有序性的问题,而锁解决了 ...
分类:
编程语言 时间:
2020-03-23 20:29:49
阅读次数:
75
双重检查锁与延迟初始化(懒汉式) 在Java多线程程序中,有时候需要采用延迟初始化来降低初始化类和创建对象的开销,在使用这些对象时才进行初始化。延迟初始化需要注意线程安全 问题,否则就容易出现问题。 单例模式在获取实例的方法中,若只判断实例是否为null,是则创建对象,否则获取对象。这种方法在多线程 ...
分类:
编程语言 时间:
2020-03-22 23:57:09
阅读次数:
131
或许你经常被问到? Volatile关键字有何作用? 实现这些作用的底层如何实现? Volatile能够保障可见性、有序性?原子性吗? 前言 我们都知道,Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用 ...
分类:
编程语言 时间:
2020-03-22 17:57:53
阅读次数:
78
多线程共享数据(多个线程共同访问相同的数据),需要进行数据同步,保证同一数据、同一时刻只能被一个线程访问。 使用同步是为了防止多个线程同一时刻对同一数据进行读写,如果对同一数据数据都只进行读操作、不进行修改,则不必使用同步。 以售票为例 不使用同步 public class SaleTicketTh ...
分类:
编程语言 时间:
2020-03-22 12:27:00
阅读次数:
99
Java多线程 当我们去阅读java的Thread类的时候,会发现这个类与大部分的java类库API有着明显的差别,它的所有关键方法都被声明为 native 。 native 本身指代的就是本地方法,而又由于java线程模型采用基于操作系统原生线程模型,这里默认Thread中 方式代指的是 Nati ...
分类:
编程语言 时间:
2020-03-22 01:30:37
阅读次数:
146