JUC
小草dym
这个作者很懒,什么都没留下…
展开
-
atomic底层实现是基于无锁算法cas
CAS 算法解析图什么叫偏移量?要用cas修改某个对象属性的值->,首先要知道属性在对象的内存空间的哪个位置,必须知道属性的偏移量UnsafeInstance.javapackage com.dym.utils;import sun.misc.Unsafe;import java.lang.reflect.Field;public class UnsafeInstance { public static Unsafe reflectGetUns...转载 2021-08-03 21:08:47 · 195 阅读 · 0 评论 -
AtomicInteger 的用法----》》既能保证线程安全又能保证效率
package com.dym.atomic;import java.util.concurrent.CountDownLatch;import java.util.concurrent.atomic.AtomicInteger;public class T1_AtomicInteger { public static int total = 0; static AtomicInteger atomic = new AtomicInteger(0); public s.原创 2021-08-03 20:22:22 · 189 阅读 · 0 评论 -
ForkJoinPool---ForkJoinTask
import java.util.concurrent.*;class MyTask extends RecursiveTask<Integer> { //拆分差值不能超过10,计算10以内运算 private static final Integer VALUE = 10; private int begin ;//拆分开始值 private int end;//拆分结束值 private int result ; //返回结果 ...原创 2021-07-26 21:58:16 · 232 阅读 · 0 评论 -
JVM垃圾回收的时候如何确定垃圾?什么是GC Roots?
GCRootDemo.java/* * 在java中可作为GC Roots的对象有: * 1.虚拟机栈(栈帧中的局部变量区,也叫做局部变量表)中引用的对象。 * 2.方法区中的类静态属性引用的对象。 * 3.方法区中常量引用的对象 * 4.本地方法栈中JNI(Native方法)引用的对象。 * */public class GCRootDemo { private byte[] byteArray = new byte[100*1024*1024]; ...原创 2021-03-09 21:56:05 · 183 阅读 · 0 评论 -
JVM 复习 概述
原创 2021-03-09 21:55:53 · 68 阅读 · 0 评论 -
死锁编码及定位分析
死锁编码及定位分析HoldThread.javaimport java.util.concurrent.TimeUnit;class HoldThread implements Runnable { private String lockA; private String lockB; public HoldThread(String lockA, String lockB) { this.lockA = lockA; thi原创 2021-03-08 20:20:19 · 81 阅读 · 0 评论 -
线程池配置合理线程数?
原创 2021-03-09 21:55:40 · 112 阅读 · 0 评论 -
工作中如何使用线程池的?自己如何定义一个线程池?
工作中如何使用线程池的?自己如何定义一个线程池?import java.util.concurrent.*;public class MyThreadPoolDemo { public static void main(String[] args) { ExecutorService threadPool = new ThreadPoolExecutor( 2, 5,原创 2021-03-09 21:54:59 · 215 阅读 · 0 评论 -
生产上如何设置线程池参数?拒绝策略怎么配?|| Executors 中 JDK 给你提供了,为什么不用??
生产上如何设置线程池参数?拒绝策略怎么配?原创 2021-03-09 21:54:41 · 209 阅读 · 0 评论 -
线程池底层工作原理?
原创 2021-03-09 21:54:24 · 137 阅读 · 0 评论 -
线程池的几个重要参数?—— 七大参数
原创 2021-03-08 20:30:48 · 725 阅读 · 1 评论 -
线程池用过吗?ThreadPoolExecutor谈谈你的理解? —— 为什么用线程池?优势?|| 线程池如何使用?
为什么用线程池?优势?线程池如何使用?原创 2021-03-06 20:39:40 · 157 阅读 · 0 评论 -
Callable接口 的相关使用
CallableDemo.javaimport java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;/*class MyThread implements Runnable{ public void run(){ }}*/class MyThread impleme...原创 2021-03-06 20:08:47 · 90 阅读 · 0 评论 -
线程通信之生产者消费者阻塞队列版
线程通信之生产者消费者阻塞队列版ProdConsumer_BlockQueueDemo.javaimport java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicInteger;class MyResource{原创 2021-03-06 19:22:48 · 135 阅读 · 0 评论 -
锁绑定多个条件Condition
/** 题目:多线程之间按顺序调用,实现A->B->C三个线程启动,要求如下:* A打印5次,B打印10次,C打印15次* 紧接着* A打印5次,B打印10次,C打印15次* 。。。。。* 打印10轮* */SyncAndReentrantLockDemo.javaimport java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.con原创 2021-03-06 16:00:15 · 336 阅读 · 0 评论 -
Synchronized和Lock有什么区别
前言早期的时候我们对线程的主要操作为: synchronized waitnotify 然后后面出现了替代方案 lock await singal 问题synchronized 和 lock 有什么区别?用新的lock有什么好处?举例说明1)原始构成synchronized属于JVM层面,属于java的关键字 monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象 只能在...原创 2021-03-06 15:34:54 · 209 阅读 · 1 评论 -
阻塞队列的应用 || 多线程的条件判断 一定要用while,而不要用 if
ProdConsTradiDemo.javapackage thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 初始值为0的变量,两个线程交替操作,一个+1,一个-1,执行五轮 * 1 线程 操作 资源类 * 2 判断 干活 通知 *...原创 2021-03-06 12:00:26 · 379 阅读 · 0 评论 -
阻塞队列的详细使用
BlockingQueueDemo.javapackage thread;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.TimeUnit;public class BlockingQueueDemo { public static void main...原创 2021-03-06 11:21:11 · 131 阅读 · 0 评论 -
Semaphore
SemaphoreDemo.javapackage thread;import java.util.concurrent.Semaphore;import java.util.concurrent.TimeUnit;public class SemaphoreDemo { public static void main(String[] args) { Semaphore semaphore=new Semaphore(3); // 模拟3个停车位 ..原创 2021-03-06 01:38:43 · 78 阅读 · 0 评论 -
CyclicBarrier
CyclicBarrierDemo.javapackage thread;import java.util.concurrent.CyclicBarrier;public class CyclicBarrierDemo { public static void main(String[] args) { CyclicBarrier cyclicBarrier=new CyclicBarrier(7,()->{ System.out.pr..原创 2021-03-06 01:18:44 · 76 阅读 · 0 评论 -
CountDownLatch 的使用 || enum 枚举使用的小技巧
CountDownLatchCountryEnum.javapackage thread;public enum CountryEnum { ONE(1, "齐"), TWO(2, "楚"), THREE(3, "燕"), FOUR(4, "赵"), FIVE(5, "魏"), SIX(6, "韩"); private Integer retCode; private String retMsg; CountryEnum(Integer ret原创 2021-03-06 01:01:54 · 105 阅读 · 0 评论