Thread
stepMoreForever
step more
展开
-
Java线程池原理
在多线程的开发中我们一般都会使用线程池,但是大家对于线程池的参数或许不是很了解。下面我们就来共同学习下:// ThreadPoolExecutor extends AbstractExecutorService// AbstractExecutorService implements ExecutorServicepublic ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,原创 2021-06-23 15:25:21 · 66 阅读 · 0 评论 -
Synchronized关键字的理解
在Java的面试中我们会被经常问到Synchronize关键字,以后我整理了网络中比较好的博客文章,基本可以涵盖面试中的所有问题。Java中锁的的状态分类1 无锁2 偏向锁3 轻量级锁4 重量级锁Synchronized升级了什么JDK 1.6中默认是开启偏向锁和轻量级锁的;在1.6之前的版本只有无锁和重量级锁(依赖于操作系统 Mutex Lock);1.6之后的版本引入了偏向锁和轻量级锁。参考资料侧重于讲synchronized关键字锁的分类和升级博客link比较全面的博客link原创 2021-06-21 09:39:10 · 62 阅读 · 0 评论 -
线程中的同步工具类
线程中常用的一些同步工具类:阻塞队列信号量(Semaphore)栅栏(Barrier)闭锁(Latch)Semaphore注意点:获得一项前,每个线程必须从信号量获取许可,从而保证可以使用该项。该线程结束后,将项返回到池中并将许可返回到该信号量,从而允许其他线程获取该项。注意,调用 acquire() 时无法保持同步锁,因为这会阻止将项返回到池中。信号量封装所需的同步,以限制对池的访问,这同维持该池本身一致性所需的同步是分开的。示例public class SemaphoreTest原创 2021-05-27 14:03:29 · 216 阅读 · 0 评论 -
Java多线程知识图谱
串行、并发与并行的概念由图片上可以较好的理解串行、并发和并行概念。并行其实就是一种更为严格、理想的并发,即并行可以被看作并发的一个特列。并发往往是带有部分串行的并发,并发的极致就是并行。从软件的角度来说,并发就是在一段时间内以交替的方式去完成多个任务,而并行就是以齐头并进的方式去完成多个任务。从硬件的角度来说,在一个处理器一次只能够运行一个线程的情况下,由于处理器可以使用时间片分配的技...原创 2019-06-02 17:37:58 · 1219 阅读 · 0 评论 -
线程之间协作
CountDownLatchCyclicBarrierExchanger原创 2019-06-02 17:00:47 · 292 阅读 · 0 评论 -
Java显式锁
LockReadWriteLockCondition原创 2019-05-31 22:09:08 · 423 阅读 · 0 评论 -
线程的生命周期状态和Object中的wait( )方法
NEW:一个已创建而未启动的线程处于该状态。一个线程只可能有一次处于该状态。RUNNABLE:包括两个子状态:READY和RUNNING。前者表示处于该状态的线程可以被线程调度器(Scheduler)进行调度而使之处于RUNNING状态。后者表示处于该状态的线程正在运行,即相应线程对象的run方法所对应的指令正在由处理器执行。执行Thread.yield( )的线程,其状态可能会由RUNNIN...原创 2019-05-30 14:34:14 · 1393 阅读 · 0 评论 -
ThreadLocal
线程特有对象每个线程都创建一个该对象的实例,各个线程仅访问各自创建的实例,且一个线程不能访问另外一个线程创建的实例。这种各个线程创建各自的实例,一个实例只能被一个线程访问的对象就被称为线程特有对象(Thread Specific Object,TSO),相对应的线程就被称为该线程特有对象的持有线程。线程特有对象既保障了对非线程安全对象的访问的线程安全,又避免了锁的开销。ThreadLocal...原创 2019-05-22 17:04:15 · 108 阅读 · 0 评论 -
Java线程池常见方法使用
在实际的编程中,我们通常借助Executor框架实现异步任务。通常用工具类ExecutorsExec来创建线程池。Executors中的常用方法// ThreadPoolExecutor extends AbstractExecutorService// AbstractExecutorService implements ExecutorServicepublic ThreadPool...原创 2019-05-26 18:11:20 · 564 阅读 · 0 评论 -
Java发布和逸出
发布发布(publish)一个对象的意思是指,使对象能够在当前作用域之外的代码中使用。可以通过公有静态变量,非私有方法,构造方法内隐含引用 三种方式。public static Set<String> knownSecrets;public void initialize(){ knownSecrets = new HashSet<>();}逸出当某...原创 2019-05-22 10:32:50 · 1129 阅读 · 2 评论 -
取消与关闭
Java没有提供任何机制来安全地终止线程。提供了中断(一种协作机制),能够使一个线程终止另一个线程的当前工作。行为良好的软件:能很完善地处理失败、关闭和取消等过程。一个可取消的任务必须拥有取消策略,在这个策略中将详细地定义取消操作的“How”、“When”以及“What”,即其他代码如何(How)请求取消该任务,任务在何时(When)检查是否已经请求了取消,以及在响应取消请求时应该执行哪些(W...原创 2019-05-25 16:22:20 · 469 阅读 · 0 评论 -
一个类中有多个synchronized关键字修饰的方法调用顺序问题
class Exam1 { public synchronized void methodThree() { System.out.println("methodThree() begin:" + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format((new Date()))); long i = ...原创 2019-05-01 22:01:23 · 764 阅读 · 0 评论