java多线程学习
疾风盲豪-亚青
这个作者很懒,什么都没留下…
展开
-
java - 多线程 07 java多线程
一、线程池的原理与使用 1、线程池的优势 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的损耗 第二:提高响应速度。当任务到达时,任务可以不需要等待线程创建就能立即执行 第三:提高线程的可管理性。线程时稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性。使用线程池可以统一的分配,调优和监控。但是要做到合理的利用线程池,必须...原创 2019-12-21 09:25:25 · 186 阅读 · 0 评论 -
java - 多线程 06 并发容器与同步容器
一、并发容器和同步容器 同步容器:一般的同步容器线程不安全,或者是线程安全但性能较差;例如ArrayList和Vector(直接在方法上加synchronized,多线程情况下性能较差)、HashMap和HashTable;可以通过Collections类来对线程不安全的集合对象进行包装,使其变得线程安全; 并发容器:CopyOnWriteArrayList、C...原创 2019-12-21 09:01:19 · 123 阅读 · 0 评论 -
java - 多线程 01 - 初步了解创建线程和线程安全问题
一、创建线程的多种方式 1、继承Thread类public class Demo1 extends Thread { public Demo1(String name) { super(name); // 给线程命名 } @Override public void run() { while(!interrupted())...原创 2019-01-14 19:33:08 · 135 阅读 · 0 评论 -
java - 多线程 02 - synchronized、volatile、锁、原子类
一、Synchronized原理与使用 1、Synchronized 原理 给进来的线程添加内置锁和互斥锁 每个线程进入到synchronized修饰的代码中,则会给这个线程获取到内置锁,从而与其他线程互斥,阻塞其他线程。此时保证了这段代码的原子性;(在jvm层面上看)在执行synchronized的同步方法块:之前会执行monitorenter(获取...原创 2019-01-14 19:43:20 · 146 阅读 · 0 评论 -
java - 多线程 03 - 初步了解 AQS
一、Lock接口的认识与使用 1、Lock、ReentrantLock(公平锁)、ReadWriteLock(读写锁)、AQS类(位置) -- jdk1.8/rt.jar/com/java/util/concurrent/atomic/locks 2、Lock 与synchronized 的比较 Lock 需要显示地获取和释放锁...原创 2019-01-14 19:59:28 · 115 阅读 · 0 评论 -
java - 多线程 04 - 线程间的通信+源码解析
一、线程之间的通信 1、 等待/唤醒机制; 通过 wait 和 notify 来进行相关的通信(一定条件下的等待和唤醒)(例子:生产者和消费者) wait(会释放拿到的锁)、notify(随机叫醒一个处于 wait 状态的线程(同一锁对象情况下,先释放了 notify 的锁才能让唤醒的线程获取锁),此时此线程会再拿到锁) 当线程在执行...原创 2019-01-22 17:03:33 · 178 阅读 · 4 评论 -
java - 多线程 05 - 并发容器和框架 - Future 和 Fork/Join
一、线程的提前完成任务 1、Future的使用 结合Callable使用,使用一个 FutureTask 来包装Callable对象,而FutureTask是实现了Future和Runnable接口的,故可用Thread包装FutureTask的对象,然后调用start方法启动线程; 可见 FutureTask 是 Runnable 的子类使用 Future 和...原创 2019-01-23 17:08:36 · 446 阅读 · 0 评论