Java面试
程序彤
无废话,纯干货。
展开
-
多线程进阶JUC之CAS初入
CAS/** * CAS是CPU的并发原语 * ABA问题 * * @Author Weton Li * @Date 2021/2/12 15:22 */public class CASdemo { public static void main(String[] args) { // public final boolean compareAndSet(int expect, int update) { 期望,更新 // return原创 2021-02-12 16:12:31 · 97 阅读 · 2 评论 -
多线程进阶JUC之Volatile三大特性和的单例模式
Volatile三大特性保证可见性/** * volatile可见性 * @Author Weton Li * @Date 2021/2/11 22:11 */public class JMMdemo1 { // 若不使用volatile,程序会死循环 private volatile static int num = 0; // 保证volatile可见性 public static void main(String[] args) { new Thr原创 2021-02-12 15:21:31 · 91 阅读 · 0 评论 -
多线程进阶JUC之四大函数式接口和ForkJoin以及JMM入门
四大函数式接口Consumer@FunctionalInterfacepublic interface Consumer<T> { /** * Performs this operation on the given argument. * * @param t the input argument */ void accept(T t);测试:/** * Supplier供给型接口,没有参数只有返回值 * @Author原创 2021-02-11 22:31:20 · 162 阅读 · 0 评论 -
多线程进阶JUC之线程池ThreadPoolExecutor
线程池记忆场景图三大方法创建线程池(不用)阿里巴巴开发手册 不允许使用Executors去创建线程池。因为,FixedThreadPool和SingleThreadPool允许的请求队列长度为Interger.Max_Value,可能导致oom。CacheThreadPool和ScheduledThreadPool允许创建的线程数量为Interger.Max_Value,可能导致oom。故必须使用ThreadPoolExecutor创建线程池// ExecutorService原创 2021-02-11 11:34:15 · 193 阅读 · 1 评论 -
多线程进阶JUC之阻塞队列与同步队列
阻塞队列使用场景:多线程并发处理和线程池四组API抛出异常不会抛出异常阻塞 等待超时等待/** * @Author Weton Li * @Date 2021/2/10 20:49 */public class BlockingQueueTest { public static void main(String[] args) throws InterruptedException {// test1();// test2();//原创 2021-02-10 23:12:08 · 312 阅读 · 1 评论 -
多线程进阶JUC之排它锁和共享锁(使用重用读写锁ReentrantReadWriteLock类)
读写锁腾讯文档 共享协作可读可写权限。如何实现多人写?即不加写锁?互斥锁,写独占,读共享只可一人独自写存,多人可同时读取,共享。使用前排它锁和共享锁同时使用后/** * 只有一个线程写,多个线程读。使用ReadWriteLock读写锁 * “读锁”是否去锁 共享锁 * “写锁”是否去锁 独占锁 * 互斥锁,写独占,读共享 * @Author Weton Li * @Date 2021/2/10 17:52 */public class ReadWriteLockDemo {原创 2021-02-10 19:45:19 · 204 阅读 · 0 评论 -
多线程进阶JUC之3大常用辅助类CountDownLatch/CyclicBarrier/Semaphore
CountDownLatch 闭锁占有减法计数器使用前/** * 计数器,减法 * @Author Weton Li * @Date 2021/2/10 16:08 */public class CountDownLatchTest { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatc原创 2021-02-10 17:42:52 · 123 阅读 · 0 评论 -
多线程进阶JUC之解决线程不安全问题和Callable的使用与注意项
解决ArrayList线程不安全并发下ArrayList线程不安全,解决方法List<·String> list = new Vector();List<·String> list = Collections.synchronizedList(new ArrayList<>())CopyOnWriteArrayList<·String> list = new CopyOnWriteArrayList<>();Vectorsynchr原创 2021-02-10 16:03:02 · 245 阅读 · 0 评论 -
多线程进阶JUC之两种生产者消费者和锁7问题
JUCjava util concurrent线程、进程进程:一个程序。一个进程包含多个线程,至少包含一个。java默认有2个线程。main、GC线程:开了一个进程mindManager,写字,线程负责自动保存java真的可以开启线程吗public synchronized void start() { /** * This method is not invoked for the main method thread or "system" * group thr原创 2021-02-08 19:55:26 · 145 阅读 · 0 评论 -
转载:String类的intern()方法
String str1 = "a";String str2 = "b";String str3 = "ab";String str4 = str1 + str2;String str5 = new String("ab"); System.out.println(str5.equals(str3));System.out.println(str5 == str3);System.out.println(str5.intern() == str3);System.out.println(st转载 2021-01-22 23:00:45 · 106 阅读 · 0 评论