自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 尚硅谷JUC#线程池

线程池介绍 第四种获取线程的方法:线程池。线程池提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。通常使用 Executors 工厂方法配置。 线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定和管理资源(包括执行任务集时使用的线程)的方法。 线程池的体系结构 工具类 : Executors 为了便于跨大量上下文使用,此类提供了很多可调整的参数和扩展钩子 (hook)。但是,强烈建议程序

2020-09-20 14:27:24 120

原创 尚硅谷JUC#线程8锁

判断打印的 “one” or “two” ? 两个普通同步方法,两个线程,标准打印, 打印结果? 新增 Thread.sleep() 给 getOne(),打印结果? 新增普通方法 getThree() , 打印结果? 两个普通同步方法,两个 Number 对象,打印结果? 修改 getOne() 为静态同步方法,打印结果? 修改两个方法均为静态同步方法,一个 Number 对象,打印结果? 一个静态同步方法,一个非静态同步方法,两个 Number 对象,打印结果? 两个静态同步方法,两个 Number

2020-09-15 21:03:53 118

原创 尚硅谷JUC#ReadWriteLock 读写锁

ReadWriteLock 维护了一对相关的锁,一个用于只读操作, 另一个用于写入操作。只要没有 writer,读取锁可以由多个 reader 线程同时保持。写入锁是独占的。 ReadWriteLock 读取操作通常不会改变共享资源,但执行写入操作时,必须独占方式来获取锁。对于读取操作占多数的数据结构。 ReadWriteLock 能提供比独占锁更高的并发性。而对于只读的数据结构,其中包含的不变性 可以完全不需要考虑加锁操作。 写写/读写 需要“互斥” 读读 不需要互斥 public class Tes

2020-09-06 15:53:36 142

原创 尚硅谷JUC#线程按序交替

要求:编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C,每个线程将自己的 ID 在屏幕上打印,要 求输出的结果必须按顺序显示。 如:ABCABCABC…… 或ABBCCCABBCCC…依次递归 public class TestABCAlternate { public static void main(String[] args) { AlternateDemo ad = new AlternateDemo(); new Thread(new Runnable()

2020-09-06 15:27:40 116

原创 尚硅谷JUC#Condition 控制线程通信

Condition 接口描述了可能会与锁有关联的条件变量。这些变量在用 法上与使用 Object.wait 访问的隐式监视器类似,但提供了更强大的功能。需要特别指出的是,单个 Lock 可能与多个 Condition 对象关联。为了避免兼容性问题,Condition 方法的名称与对应的 Object 版本中的不同。 在 Condition 对象中,与 wait、notify 和 notifyAll 方法对应的分别是 await、signal 和 signalAll。 Condition 实例实质上被绑定到一

2020-09-05 16:21:01 134

原创 尚硅谷JUC # CountDownLatch(闭锁)

概念 CountDownLatch(闭锁)——一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。CountDown(倒数)latch(锁) 用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。== 一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行。== 闭

2020-09-04 16:31:57 90

原创 尚硅谷JUC # Lock 同步锁

在 Java 5.0 之前,协调共享对象的访问时可以使用的机制只有 synchronized 和 volatile 。Java 5.0 后增加了一些新的机制但并不是一种替代内置锁的方法,而是当内 置锁不适用时,作为一种可选择的高级功能。 ReentrantLock 实现了 Lock 接口,并提供了与 synchronized 相同的互斥性和内存可见性。但相较于 synchronized 提供了更高的处理锁的灵活性。 解决多线程安全问题的三种方式 jdk 1.5 前: synchronized:隐式锁 1.同

2020-09-04 16:27:01 131

原创 尚硅谷JUC # 实现 Callable 接口

Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口。Callable 需要依赖FutureTask ,FutureTask 也可以用作闭锁。 创建线程的四种方式 无返回: 1、实现Runnable接口,重写run(); 2、继承Thread类,重写run(); 有返回: 3、实现Callable接口,重写call(),利用FutureTask包装Callable,并作为task传入Thread构造函数; 4、利用线程池; Callable

2020-09-04 15:12:53 91

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除