
多线程
Chenchen-
展望天空
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ThreadPoolExecutor 简单应用
适用场景:读取数据库数据,刷数据等批量操作直接上代码package test;import com.alibaba.fastjson.JSONObject;import io.tava.function.Consumer1;import org.springframework.stereotype.Component;@Componentpublic class Producers implements Consumer1<JSONObject>{ private原创 2022-03-01 21:22:48 · 513 阅读 · 0 评论 -
多线程wait
wait 解除当前线程 对资源占用的锁 和释放cpu资源写了两个例子理解waitsleep与wait的区别sleep在任何地方,睡眠当前线程一定时间,让出cpu资源wait 是等待,让出锁资源和cpu资源,让出锁资源就必须有锁,所以只能在synchronized块中,已经拿到锁了才可以调用wait来释放锁,notify是另一个线程调用,让wait队列中的一个出来,有再次争抢锁的权利,放到可以争抢锁的队列,notifyAll就是让所有wait的线程有争抢锁的权利。Queue<Int原创 2021-08-08 23:40:38 · 818 阅读 · 1 评论 -
强引用,软引用,弱引用,虚引用
强引用StrongReference例子:// 强引用 String strongReference = new String("abc");最普遍的引用,内存不够用报错GC也不会回收软引用SoftReference例子:// 软引用 String str = new String("abc");SoftReference<String> softReference = new SoftReference<String>(str);内存不够用就会被回收.原创 2020-10-22 17:42:50 · 123 阅读 · 0 评论 -
ThreadLocal 与 弱引用 与 内存泄漏
ThreadLocal threadlocal而是一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,只有指定线程可以得到存储数据,使用方法也很简单static final ThreadLocal<T> sThreadLocal = new ThreadLocal<T>();sThreadLocal.set()sThreadLocal.get()例子代码public class ThreadLocalTest {...原创 2020-10-22 16:24:53 · 276 阅读 · 0 评论 -
Lock和多线程工具笔记
ReentrantLock介绍:用lock和unlock进行枷锁和解锁,配合try、finally来实现,和synchronized wait notify 对比1 有公平锁的功能2 可中断lock.lockInterruptibly()3CAS枷锁方式4 trylock 可以规定时间内获得一把锁CyclicBarrier(人满发车)介绍:满人发车,可以限制N个线程阻塞,当阻塞线程达到N个之后,可以执行一个方法,阻塞的线程统一执行,使用CyclicBa...原创 2020-10-22 12:34:00 · 125 阅读 · 0 评论 -
淘宝多线程面试题2个分享
问题1实现一个容器,提供两个方法,add,size,写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当到5个时候,线程2给出提示并结束。考点:锁的应用wait和notify 以及其他锁的应用import java.util.ArrayList;import java.util.List;public class TaobaoTest { public static void main(String[] args) { Container co原创 2020-10-22 11:05:54 · 272 阅读 · 1 评论 -
Volatile和锁Synchronized,cas(Atomic),ReentrantLock,ReadWriteLock 笔记
Synchronized 锁特性:原子性 ,可见性,可重入锁,异常会释放锁使用:1 加在方法上,如果是非静态方法就是锁住了这个对象,这个对象多个Synchronized方法只能执行一个2加在方法上,如果是静态方法就是锁住了这个类,这个类多个Synchronized方法只能执行一个3 加在对象上,Synchronized 对象同样的代码段只能执行一个4 加在class上,Synchronized 同样的类代码段只能执行一个锁升级:偏向锁-》自旋锁-》重量锁偏向锁:一个.原创 2020-10-21 14:39:38 · 155 阅读 · 0 评论 -
多线程6种状态转换
一 多线程状态转换图二 状态转换1 new 状态还没调用start方法时候的状态2 runnable 运行时状态Java线程的RUNNABLE状态其实是包括了传统操作系统线程的ready和running两个状态的。suspend()挂起,进入ready状态,resume()结束挂起进入running状态Thread.yield 从新放到调度器的队列中等待轮到了就执行3 time_waitingSleep(time)睡眠指定时间Wait (time)休眠指...原创 2020-10-21 11:45:24 · 687 阅读 · 0 评论