上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 117 下一页
  2022年1月23日
摘要: 一、Semaphore 信号灯 Semaphore 的构造方法中传入的第一个参数是最大信号量(可以看成最大线程池),每个信号量初始化为一个最多只能分发一个许可证。使用 acquire 方法获得许可证, release 方法释放许可。 在信号量上我们定义两种操作: acquire(获取) 当一个线程调 阅读全文
posted @ 2022-01-23 21:27 格物致知_Tony 阅读(44) 评论(0) 推荐(0)
摘要: 一、CyclicBarrier CyclicBarrier 的字面意思是可循环(Cyclic)使用的屏障(Barrier)。 它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。线程进入屏障通过CyclicBa 阅读全文
posted @ 2022-01-23 21:12 格物致知_Tony 阅读(67) 评论(0) 推荐(0)
摘要: 一、引入案例 假如说有6个同学在教室上自习(模拟6个线程),班长(主线程)拿着教室的钥匙,等到下课后,必须等所有的同学都离开了,班长才能锁门离开。如何实现? 普通的实现: private static void closeDoor() { for (int i = 0; i < 6; i++) { 阅读全文
posted @ 2022-01-23 21:01 格物致知_Tony 阅读(98) 评论(0) 推荐(0)
  2022年1月22日
摘要: 一、创建线程的多种方式 四种 1、JDK1.5 之前,传统的方式有两种 继承 Thread 类 实现 Runnable 接口 2、JDK1.5 之后,新增了两种 使用 Callable 接口 通过线程池获取线程 二、Callable 接口 目前我们学习了有两种创建线程的方法-一种是通过创建 Thre 阅读全文
posted @ 2022-01-22 22:08 格物致知_Tony 阅读(175) 评论(0) 推荐(0)
摘要: 一、什么是死锁 首先我们先来看看死锁的定义:“死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。”那么我们换一个更加规范的定义:“集合中的每一个进程都在等待只能由本集合中的其他进程才能引发的事件,那么该组进程是死锁的。” 阅读全文
posted @ 2022-01-22 17:43 格物致知_Tony 阅读(117) 评论(0) 推荐(0)
摘要: 一、可重入锁 可重入就是说某个线程已经获得某个锁,可以再次获取锁而不会出现死锁。 可重入锁,意味着线程可以进入它已经拥有的锁的同步代码块。 Java 中的 synchronized(隐式)与Lock(显式)都是可重入锁。 二、示例 1、synchronized 同步代码块 public class 阅读全文
posted @ 2022-01-22 17:42 格物致知_Tony 阅读(157) 评论(0) 推荐(0)
摘要: 一、案例 1、售票案例 //第一步 创建资源类,定义属性和和操作方法 class LTicket { //票数量 private int number = 30; //创建可重入锁 private final ReentrantLock lock = new ReentrantLock(); //卖 阅读全文
posted @ 2022-01-22 15:57 格物致知_Tony 阅读(51) 评论(0) 推荐(0)
摘要: 一、情景一 1、代码 class Phone { public synchronized void sendSMS() throws Exception { System.out.println(" sendSMS"); } public synchronized void sendEmail() 阅读全文
posted @ 2022-01-22 14:22 格物致知_Tony 阅读(266) 评论(0) 推荐(0)
  2022年1月20日
摘要: 一、HashMap 是不安全的 1、故障现象 public class NotSafeMapDemo { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); for (int i = 阅读全文
posted @ 2022-01-20 22:51 格物致知_Tony 阅读(248) 评论(0) 推荐(0)
摘要: 一、HasheSet 集合的不安全 1、故障现象 public class NotSafeSetDemo { public static void main(String[] args) { Set<String> set = new HashSet<>(); for (int i = 0; i < 阅读全文
posted @ 2022-01-20 22:42 格物致知_Tony 阅读(1061) 评论(0) 推荐(1)
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 117 下一页