
Concurrent Programming
徐师兄学姿势
成年人的世界没有容易二字,加油!!!
展开
-
线程池里如何养鱼
什么是线程池?线程池(容器)里面有提前创建好若干的线程,等分配任务去执行;执行完任务之后 不会被销毁又会准备去执行其他任务可以减少线程的创建和销毁的性能开销提高响应速度,有任务来了无需等待创建新线程就能立马执行合理设置线程池大小可以避免因为创建线程过多导致的硬件瓶颈带来的问题newFixedThreadPoolnewSingleThreadExecutornewCachedThreadPoolnewScheduledThreadPool...原创 2020-08-17 21:45:58 · 117 阅读 · 0 评论 -
前入式JUC常用类源码分析
CountDownLatchpublic class CountDownDemo { /** * countdown倒计时的意思;允许一个或者多个线程被阻塞,等待其他线程执行完在被唤醒,有点类似join * 应用场景:可以用来控制并发量,在某个条件之后实现秒杀 * @param args */ public static void main(String[] args) throws InterruptedException { Co原创 2020-08-17 18:43:39 · 16700 阅读 · 0 评论 -
AQS
浅出重入锁reentrantlock下面简单演示一下 使用JDK的JUC并发包的reentrantlockpublic class MyReentrantLock { // 锁是什么? // 锁是用来解决 多线程并发访问带来的资源竞争 引发的共享资源的安全性问题 // 对一个共享资源加锁之后 如果一个线程获得了锁 那么其他线程不能访问这个资源 public static Lock lock = new ReentrantLock(); public static原创 2020-08-14 21:46:53 · 124 阅读 · 0 评论 -
后入式对象的发布与逃逸
何为对象的发布?大到把项目的war发布到Tomcat上,小到是一个对象能够被当前范围之外的代码访问到不安全发布unsafe publish/** * 对象的不安全发布 * 逃逸:对象还没有被构造完成的时候 就被发布(其他线程可见) */public class PublishAndOverflow { //private修饰的成员变量 只能当前类当中使用 private String[] strArr = {"a", "b", "c", "d"}; public .原创 2020-08-14 16:07:15 · 3698 阅读 · 0 评论 -
深入快出并发线程安全性问题
并发问题的源头–原子性,可见性,有序性/** * 原子性验证 */public class AtomicTest { public static int count = 0; public static void methodSleep() { try { Thread.sleep(2); } catch (InterruptedException e) { e.printStackTrace();原创 2020-08-11 22:14:20 · 126 阅读 · 0 评论 -
慢入慢出线程的基本操作和原理
Thread.join()public class MyJoinTest { public static void main(String[] args) throws InterruptedException { Thread t0 = new Thread(()-> System.out.println("Thread0")); Thread t1 = new Thread(new Thread1(), "myThread1"); Thre原创 2020-08-11 17:38:33 · 1348 阅读 · 0 评论 -
深入感受多线程的三种创建方式&线程的生命周期
Java多线程的三种创建方式的实现以及区别直接继承Thread类public class MyThreadOfExtendsThread extends Thread { @Override public void run() { super.run(); System.out.println("继承Thread 重写覆盖父类run方法 实现一个线程" + Thread.currentThread().getName()); }}实现R原创 2020-08-10 13:53:48 · 144 阅读 · 0 评论