多线程
文章平均质量分 62
Scott的博客
天行健,君子以自强不息,地势坤,君子以厚德载物
展开
-
Java ReentrantLock 简介
一、概述ReentrantLock是一个可重入锁。具有公平性和非公平性两种模式。可重入:如果当前线程已经获取到锁了,在再次获取的时候可以对共享资源重复加锁,不需要重新排队即可获取到。公平锁:线程获取锁必须按照FIFO的模式排队获取,先到先得。非公平锁:允许队列后面的线程先获取锁。二、ReentrantLock的相关属性与构造方法Sync sync:ReentrantLock...转载 2020-03-19 15:31:00 · 227 阅读 · 0 评论 -
Java 多线程并发控制信号量 Semaphore
一、概述Semaphore 可以控制某个对象(变量,方法,代码块)的并发访问数量,可用作限流。Semaphore在初始化时可以指定多少个许可证。如果需要访问某个被Semaphore控制的对象,线程只有在获取到许可证的情况下才能访问,否则就一直阻塞直到获取到许可证或者线程被中断。Semaphore可以设置公平策略和非公平策略,当设置为false时,Semaphore不会保证线程获取许可证的顺序。...原创 2020-03-18 10:10:29 · 675 阅读 · 0 评论 -
Java多线程-线程通讯交换器ExchangerDemo
一、概述ExchangerDemo对象提供了一个线程之间彼此能够交换对象的同步点。线程通过V exchange(V x) throws InterruptedException方法传入需要交换的对象到ExchangerDemo中,匹配其它线程(同一个ExchangerDemo对象的线程),接收其它线程中的对象作为返回值。二、主要方法V exchange(V x) throws Inte...原创 2020-03-12 15:32:19 · 166 阅读 · 0 评论 -
Java多线程同步屏障CyclicBarrierDemo对象
一、概述同步屏障可以使多条线程彼此等待,直到抵达某个公共的屏障点。线程之间彼此等待时已经抵达公共屏障点的线程不会继续往下执行,会在所有线程抵达公共屏障点之前一直阻塞。CyclicBarrierDemo对象可以重用,这点与上一篇中的CountDownLatch对象不同,CountDowLatch时不可重用的。二、主要方法CyclicBarrier(int parties):初始化一个包含...原创 2020-03-12 14:50:21 · 303 阅读 · 0 评论 -
java多线程 CountDownLatch对象的简单使用
一、概述CountDownLatch对象可以使一条或多条线程阻塞,直到CountDownLatch的state变量的值为 0 时阻塞的线程才得以继续进行。这个过程由一个计数变量和两个操作组成。二、主要方法。void await(): 除非线程被中断,否则强制阻塞线程直到计数变量为0。当计数变量为0时,该方法立即返回。线程被中断时抛出异常。boolean await(long timeo...原创 2020-03-12 13:38:55 · 312 阅读 · 0 评论 -
线程池ThreadPoolExecutor与Executors框架
一、线程池的优点降低资源损耗、提高响应速度、提高线程的可管理性二、ThreadPoolExecutor线程池ThreadPoolExecutor的重要属性说明:corePoolSize:核心线程数,如果运行的线程少于corePoolSize,则创建新线程来执行新任务,即使线程池中存在空闲线程maximumPoolSize:最大线程数,可允许创建的线程数,线程数量达到核心线程数后...原创 2020-02-28 15:10:32 · 450 阅读 · 0 评论 -
java线程死锁
死锁:线程A在持有A锁的情况下去获取正在请求A锁的线程B所持有的B锁。package com.scott.current;/** * 线程死锁 */public class DeadLockDemo { private final Object lock1 = new Object(); private final Object lock2 = new Objec...原创 2020-02-12 15:27:23 · 108 阅读 · 0 评论 -
Java线程局部变量
每个ThreadLocal实例代表一个局部变量如下代码中所示,time变量为不同的线程设置了不同的睡眠时间。package com.scott.current;public class ThreadLocalDemo { private static volatile ThreadLocal<String> userId = new ThreadLocal<...原创 2020-02-12 15:22:04 · 152 阅读 · 0 评论 -
Java线程的创建
Java程序是通过线程执行的,线程在程序中具有独立的执行路径。Java虚拟机为每条分配独立的JVM栈空间以免彼此干扰。Runnable接口为关联Thread对象的线程提供执行代码。package com.scott.current;public class ThreadDemo { public static void main(String[] args) { ...原创 2020-02-12 14:47:26 · 88 阅读 · 0 评论 -
Java线程等待、睡眠、中断
参考资料:java线程与并发编程实践线程状态NEW:该状态下线程还没有执行RUNNABLE:该状态下线程正在JVM中执行BLOCKED:该状态下线程阻塞并等待一个监听锁WAITING:该状态下线程无限期等待TIMED_WAITING:该状态下线程在指定时间内等待TERMINATED:改状态下线程已退出线程的睡眠和中断/** * 线程的睡眠和中断 */...原创 2020-02-12 15:13:46 · 1084 阅读 · 0 评论