![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
wmtmw
之前的博客:https://wmtmw.github.io/
展开
-
线程池中的worker类(未完)
还没认真看,先记下来这是一个要看的点。 线程池中的每一个线程都被封装成一个Worker对象,ThreadPool维护的是一组Worker对象。 定义 //继承AQS,并实现了Runnable接口 private final class Worker extends AbstractQueuedSynchronizer implements Runnable { /** * This class will never be seria原创 2020-06-15 23:53:56 · 512 阅读 · 0 评论 -
SpringBoot中线程池的使用
待补充 线程池的配置 Service层 controller层原创 2020-06-15 23:20:38 · 170 阅读 · 0 评论 -
synchronized
synchronized(this|object)以及synchronized修饰非静态方法是对象锁 synchronized(类.class)以及修饰静态方法是类锁。 同一个类的不同对象的对象锁不是一把锁 同一个类的同一对象的对象锁,同一个类的同一对象的类锁以及同一个类的不同对象的类锁,分别是同一把锁。 类锁和对象锁是独立的,互不干扰。 判断方法间是否是同步的,关键是判断获取的是否是同一把锁!原创 2020-05-19 17:51:54 · 124 阅读 · 0 评论 -
Java内存模型和volatile
硬件效率与一致性 CPU执行计算任务,需要从内存中读取和写入数据,但计算机存储设备和CPU的运算速度有几个数量级的差距。 在内存和CPU之间增加一层或多层高速缓存作为CPU和内存之间的缓冲(高速缓存的读写速度接近处理器)。 在多核处理器系统中,多个处理器任务都涉及同一块主内存区域时,可能会发生各缓存不一致的现象。 引入缓存一致性协议:MSE、MESI、MOSI等。 为了使处理器内部运算单元被充分利用,处理器可能会对输入代码进行乱序执行优化,处理器会在计算之后将乱序执行的结果重组,保证该结果与顺序执行的结果原创 2020-05-19 11:48:50 · 81 阅读 · 0 评论 -
ReentrantLock+Condition实现线程精准唤醒
让三个线程顺序打印A,B,C 具体代码 import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Main{ public static void main(String[] args) { Test test = new Test();原创 2020-05-10 10:39:09 · 361 阅读 · 0 评论 -
线程加入:join方法
join方法用于等待其他线程终止 如果线程A中调用了线程B的join方法,那么线程A阻塞,直到线程B执行完后,线程A从阻塞状态转为就绪状态,等待获取CPU的使用权。 join方法要在start方法调用后调用才有效,线程必须启动,再加入。 例子1: 让两个线程顺序打印1,2,3,即线程A打印123,线程A打印完后,线程B再打印 public class Main{ public static void main(String[] args) throws InterruptedException {原创 2020-05-10 00:00:21 · 372 阅读 · 0 评论 -
线程池和阻塞队列
ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<原创 2020-05-09 21:02:31 · 370 阅读 · 0 评论 -
java线程的创建方式
继承Thread类 //通过继承Thread类创建NewThread线程 class NewThread extends Thread{ public void run(){ System.out.println("create a thread by extends Thread"); } } public class Main{ public static void main(String[] args) { //实例化一个NewThread线程对象 .原创 2020-05-09 11:03:31 · 126 阅读 · 0 评论