多线程
为什么坚持?
人的痛苦源于对自己无能的愤怒!!!
Don't forget, a person's greatest emotional need is to feel appreciated.
莫忘记,人类情感上最大的需要是感恩。
展开
-
线程池的使用 有返回值 无返回值
线程池需要返回值线程池的创建ThreadPoolExecutor threadPool = new ThreadPoolExecutor(10, 10, 500, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(20), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());public List原创 2020-10-10 16:28:41 · 1210 阅读 · 0 评论 -
多线程知识总结
未完待续原创 2020-05-10 23:07:38 · 84 阅读 · 0 评论 -
java线程池介绍
SingleThread线程池中只有一个线程,保证队列中的线程顺序执行为什么要这么做?为什么不自己new 一个线程执行?任务队列 生命周期 便于管理维护public class thread_pool_06_SingleThread { public static void main(String[] args) { ExecutorService...原创 2020-05-06 23:21:54 · 1006 阅读 · 0 评论 -
线程池
Executor只有一个execute方法,入参是一个Runnable 线程实现线程的创建和运行分离是个接口,可以各种实现ExecutorServiceExecutor继承了Executorsubmit 方法,入参是Callable 出参是 FutureCallable创建一个Callable方法,重写call方法(写自己的业务逻辑)创建一个ExecutorServ...原创 2020-05-02 22:52:51 · 242 阅读 · 0 评论 -
容器总结
1 vector2 queue offer 添加 peek 取出 不去除 poll 取出 并去除 blockQueue put take 阻塞方法 (park unpark condition)3 concurrentLiptMap 跳4 copyOrWriteList 读不上锁 写上锁 CAS5 con...原创 2020-04-26 23:23:14 · 135 阅读 · 0 评论 -
HashMap HashTable Collections.synchronizedMap(new hashMap()) 性能比较
HashTable线程安全的方法全部都是被synchronized修饰HashMap线程不安全的ConcurrentHashMap线程安全的HashTable 性能测试public class map_02_hashtable { static Hashtable<Integer,Integer> hashtable = new Hashtable...原创 2020-04-23 23:46:39 · 342 阅读 · 0 评论 -
对象的四种引用关系--强 软 弱 虚
对象的四种引用关系–强 软 弱 虚强引用:public static void main(String[] args) throws IOException { Object m = new Object(); System.gc(); //垃圾回收不了m m = null; System.gc(); //垃圾回收了m ...原创 2020-04-22 22:27:44 · 232 阅读 · 0 评论 -
多线程--ThreadLocal和内存泄漏
ThreadLocalthreadlocal是一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,只有指定线程可以得到存储数据public class Thread_19_Thread_Local { public static class Person{ Person(String userName){ this.userNa...原创 2020-04-21 22:15:16 · 180 阅读 · 0 评论 -
Lock.unlock()源码解析
Lock 源码个人理解 (java8)ReentrantLock lock = new ReentrantLock(); lock.lock(); lock.unlock();waitStatus节点的几种状态:CANCELLED,值为1,由于在同步队列中等待的线程等待超时或者被中断,需要从同步队列中取消等待,节点进入...原创 2020-04-20 20:54:16 · 1443 阅读 · 0 评论 -
Lock.lock源码理解
Lock 源码个人理解 (java8) ReentrantLock lock = new ReentrantLock(); lock.lock(); lock.unlock();reentrantLock 的 lock.lock()开始执行到reentrantLock的内部类NonfairSync的lock()方法...原创 2020-04-19 23:34:28 · 803 阅读 · 0 评论 -
多线程-固定容量同步容器
生产者消费者容器写一个固定容量同步容器,拥有put和get方法,以及getCount方法,能够支持2个生产者线程以及10个消费者线程的阻塞调用使用wait和notify/notifyAll来实现方法一: 使用synchronized 方法方法上使用synchronized 用 this.wait() this.notifyAll()判断条件的时候使用while因为notifyA...原创 2020-04-18 17:19:49 · 120 阅读 · 0 评论 -
多线程_交替打印
面试题:两个线程交替打印26个英文字母和数字1A2B3C…26Z方法一 park unparkpublic class Thread_two_thread_06_26 { static Thread t1; static Thread t2; public static void main(String[] args) { List<I...原创 2020-04-16 23:20:05 · 264 阅读 · 6 评论 -
多线程_面试题_线程管理类应用
多线程面试题一:实现一个容器,提供两个方法,add,size写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束方法一:• park unpark ( LockSupport)• semaphore 灯塔public class thread_two_thread_01 { List<Integer> l...原创 2020-04-14 23:38:09 · 129 阅读 · 0 评论 -
多线程_线程管理类
countDownLatch 管理线程 – 线程门栓• 统计线程总数量• 没完成一个线程,countDown 总数量减1• 知道总数量为0 继续执行后面的代码public class Thread_12_countdownlatch { CountDownLatch count = new CountDownLatch(10); ReentrantLock lock =...原创 2020-04-13 18:10:19 · 298 阅读 · 0 评论 -
多线程_Lock
ReentrantLock和synchronized区别作用跟synchronized 锁一样reentrantlock 底层是 cas (值,期望,预期) synchronized 底层锁升级reentrantlock 可以tryLock 尝试锁a. 如果在某时间段内获取到锁,就执行b. 如果拿不到锁,不需要跟synchronized一样wait,可以直接跳过,继续执行代码需要...原创 2020-04-12 22:02:42 · 106 阅读 · 0 评论 -
多线程_volatile+CAS
volatile作用:内存可见性a. MESIb. 保证cpu之间缓存一致性禁止指令重排序jvm中Object o = new Object() 对象的创建过程在jvm的堆中申请内存(提供默认初始值)给对象赋予成员变量的值把内存地址值给了方法栈中的ovolication的特性• 数据可见性• MESI• 缓存一致性协议• 阻止cpu命令重排序• loadfence 源...原创 2020-04-11 18:10:37 · 351 阅读 · 0 评论 -
多线程_锁
知识总结:synchronized 支持锁重入方法锁 == synchronized(this)静态方法static上面加锁 == synchronized(T.Class)锁方法如果发生异常,会释放锁,等待队列里面的线程会抢到锁,导致数据异常public class Thread_03_synchronize implements Runnable{ private In...原创 2020-04-10 14:17:23 · 96 阅读 · 0 评论 -
多线程_基础知识
多线程的创建与运行创建线程的三种方式a. extend Threadb. implements Runnable ( java8写法)c. 线程池(获取)run与start的区别:a. run 可以理解为进程(run执行完,才执行main方法 串行)b. start 是启动线程(并行)public class Thread_01_comment_method { s...原创 2020-04-10 14:10:49 · 113 阅读 · 0 评论