JUC
文章平均质量分 94
csdn_9527666
这个作者很懒,什么都没留下…
展开
-
ScheduledThreadPoolExecutor JDK定时任务线程池
https://www.jianshu.com/p/18f4c95aca24流程:1 提交任务的时候,任务被包装成ScheduledFutureTask对象加入延迟队列并启动一个woker线程。2 用户提交的任务加入延迟队列时,会按照执行时间进行排列,也就是说队列头的任务是需要最早执行的。而woker线程会从延迟队列中获取任务,如果已经到了任务的执行时间,则开始执行。否则阻塞等待剩余延...转载 2020-03-31 12:06:51 · 295 阅读 · 0 评论 -
线程池
线程池原理:每一个 Thread 的类都有一个 start 方法。 当调用start启动线程时Java虚拟机会调用该类的 run 方法。 那么该类的 run() 方法中就是调用了 Runnable 对象的 run() 方法。我们可以继承重写 Thread 类,在其 start 方法中添加不断循环调用传递过来的 Runnable 对象。这就是线程池的实 现原理。循环方法中不断获取 Run...原创 2020-03-31 12:00:26 · 165 阅读 · 0 评论 -
线程
创建方式线程的创建有三种方式:继承Thread,实现Runnable接口,利用Callable跟Future继承Thread(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程。代码块pub...原创 2020-03-31 11:10:06 · 122 阅读 · 0 评论 -
volatile
线程间可见性: 一个线程变更了 先存在cpu三级缓存 中 再刷到内存 另一个线程读自己的三级缓存或内存 导致数据不一致volatile1可使cpu三级缓存失效 线程变更刷内存 另一个线程只读内存2禁止指令重排序synchronized = volatile+ 线程间互斥(同一时刻只能有一个进行写操作)在程序运行时,为了提高执行性能,编译器和处理器会对指令进行重排序,JMM...原创 2020-03-29 23:57:18 · 90 阅读 · 0 评论 -
Threadlocal
https://www.cnblogs.com/micrari/p/6790229.html转载 2020-03-29 23:55:46 · 109 阅读 · 0 评论 -
ReentrantReadWriteLock
目录ReadWriteLock 接口:属性:构造方法:内部类sync实现了ReadWriteLock 接口ReadWriteLock 接口:代码块public interface ReadWriteLock { /** * Returns the lock used for reading. * * @return the l...原创 2020-03-29 23:53:40 · 284 阅读 · 0 评论 -
ReentrantLock
目录Lock:属性:Sync: 继承了AQS 的抽象类NonfairSyncFairSync:ReentrantLock 构造方法:lock 方法: 阻塞式获取锁lockInterruptibly 方法:acquireInterruptibly方法:tryLock 尝试1次获取锁tryLock带有超时时间的获取锁:调用AQS 中的tryAcquire...原创 2020-03-29 23:50:37 · 577 阅读 · 0 评论 -
longadder
多个线程写的时候 竞争多个资源 如竞争到最后一个仍然失败 则执行扩容操作继承自父类Striped64 中的关键属性 /** Number of CPUS, to place bound on table size */ static final int NCPU = Runtime.getRuntime().availableProcessors(); /** ...原创 2020-03-29 23:26:05 · 198 阅读 · 0 评论 -
FutureTask源码解析
Future 同时 实现了 Runnable 与 Future 接口不仅是 线程任务 也实现了 异步获取任务结果的能力FutureTask实现的接口信息如下:Future 接口:public interface Future<V> { /** * Attempts to cancel execution of this task. This...原创 2020-03-27 14:44:13 · 371 阅读 · 0 评论 -
ArrayBlockingQueue
目录属性构造方法:实现了 迭代器、集合、队列、阻塞队列、可序列化 接口继承了 抽象集合、抽象队列 类CollectionQueueBlockingQueueAbstractCollectionAbstractQueue属性代码块 // 序列化id private static final long serialVersionUID = -...原创 2020-03-27 14:34:32 · 104 阅读 · 0 评论 -
AQS
https://ifeve.com/introduce-abstractqueuedsynchronizer/AbstractQueuedSynchronizer 继承了AbstractOwnableSynchronizerAbstractOwnableSynchronizer 辅助实现了线程独占锁AbstractQueuedSynchronizer 属性:代码块 ...原创 2020-03-27 12:56:31 · 86 阅读 · 0 评论