
01 java并发编程
多线层
青春1314
这个作者很懒,什么都没留下…
展开
-
线程池的工具类
import java.util.concurrent.LinkedBlockingDeque;/** * 线程池的工具类 */public class ThreadPoolUtil { /** * 线程池的队列 */ public static final LinkedBlockingDeque<Runnable> WORKQUEUE...原创 2020-04-29 12:48:48 · 232 阅读 · 0 评论 -
自己实现的线层池
import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;/** * 自己实现的线层池 */public class MyThreadPool { // 线程池中默认线程的个数为5 private static int WORK_NUM = 5;...原创 2020-04-19 18:24:53 · 163 阅读 · 0 评论 -
实现一个自己的类ReentrantLock
import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;/** * * 实现一...原创 2020-03-23 00:26:42 · 173 阅读 · 2 评论 -
三个线程,线程A不停打印A、线程B不停的打印B、线程C不停的打印C
/** * 三个线程,线程A不停打印A、线程B不停的打印B、线程C不停的打印C, * 如何通过synchronized、wait、notifyAll(或notify)的组合,使三个线程不停地且顺序地打印出ABCABC */public class ABCRunnable implements Runnable { private String obj; //前一个线程...原创 2020-03-21 22:21:38 · 644 阅读 · 0 评论 -
Lock和Condition实现等待通知
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * Lock和Condition实现等待通知 */public class ExpressCond { p...原创 2020-03-15 19:23:32 · 153 阅读 · 0 评论 -
演示Callable Future FutureTask的使用
get():获取任务执行结果,如果任务还没完成(state<=COMPLETING),则会阻塞等待直到任务执行完成;如果任务被取消,则会抛出CancellationException异常;如果任务执行过程发生异常,则会抛出ExecutionException异常;如果阻塞等待过程中被中断,则会抛出InterruptedException异常。 isDone():判断任务...原创 2020-03-08 15:07:38 · 143 阅读 · 0 评论 -
Semaphore的使用
import java.util.Random;import java.util.concurrent.Semaphore;/** * Semaphore的使用 * 模拟:餐厅2个座位,有4个人要等位就餐 */public class UseSemaphore { private static class UseThread extends Thread { ...原创 2020-03-05 22:17:18 · 105 阅读 · 0 评论 -
CyclicBarrier的使用
让一组线程到达一个屏障时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行。 import java.util.Map; import java.util.Random; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CyclicB...原创 2020-03-01 23:13:21 · 128 阅读 · 0 评论 -
CountDownLatch的使用
作用:它允许一个或是多个线程等待其他的线程完成工作以后再执行。 countDown():一个线程完成以后,调用这个方法,事件计数器减一。 await() :阻塞当前线程,直到计数器为0,即所有事件完成。import java.util.concurrent.CountDownLatch;/** * CountDownLatch的使用 */public c...原创 2020-03-01 17:13:03 · 143 阅读 · 0 评论 -
演示调用sleep方法,锁是否释放
/** * 演示调用sleep方法,锁是否释放 */public class SleepLock { private Object lock = new Object(); private class ThreadSleep extends Thread{ @Override public void run() { ...原创 2020-02-26 22:35:25 · 421 阅读 · 0 评论 -
join()
主要作用是同步,它可以使得线程之间的并行执行变为串行执行。在A线程中调用了B线程的join()方法时,表示只有当B线程执行完毕时,A线程才能继续执行。/** * join方法的使用 */public class UseJoin { private static class JumpQueue implements Runnable { private T...原创 2020-02-25 23:44:50 · 164 阅读 · 0 评论 -
ThreadLocal的使用
/** * 演示ThreadLocal的使用 */public class UseThreadLocal { static ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>(){ @Override protected Integer initialValu...原创 2020-02-23 21:06:12 · 126 阅读 · 0 评论 -
守护线程的使用和守护线程中的finally语句块
守护线程是为其他非守护线程的线程服务,当线程中不存在非守护线程时,则守护线程自动销毁。 守护线程结束时,不一定会执行finally语句。 import java.util.concurrent.ExecutionException; /** * 守护线程的使用和守护线程中的finally语句块 */ public class DaemonTh...原创 2020-02-16 16:44:19 · 339 阅读 · 0 评论 -
如何中断实现Runnable类型的线程
/** * 如何中断实现Runnable类型的线程 */public class EndRunnable { private static class UseRunnable implements Runnable{ @Override public void run() { Thread thread = Thread.cu...原创 2020-02-16 16:12:36 · 1065 阅读 · 0 评论 -
如何安全中断继承Thread的线程
/** * 如何安全中断继承Thread的线程 */public class EndThread { private static class UseThread extends Thread{ public UseThread(String name) { super(name); } @Override...原创 2020-02-16 13:17:37 · 189 阅读 · 0 评论 -
Java有几种新启线程的方式?
①继承Thread类创建线程 Thread类代表线程,代表线程的类可以通过继承Thread类,并重写run()方法,调用线程类实例的start方法来启动线程。 ②实现Runnable接口创建线程 调用Thread的构造方法来创建Thread。 ③实现Callable接口通过FutureTask包装器来创建Thread线程 import java.util...原创 2020-02-15 17:01:04 · 245 阅读 · 0 评论 -
AtomicInteger的使用
import java.util.concurrent.atomic.AtomicInteger;/** * AtomicInteger的使用 */public class TestAtomic { public static void main(String[] args) { OperationData operationData = new Operat...原创 2020-01-13 00:19:54 · 162 阅读 · 0 评论 -
java 并发工具类Semaphore用法
Semaphore(int permits,boolean fair):构造方法,当fair等于true时,创建具有给定许可数的计数信号量并设置为公平信号量。 int availablePermits():返回此信号量中当前可用的许可数。 void acquire():表示从此信号量获取一个许可,并将可用许可数减1。如果当前信号量没有许可可获取,线程将被阻塞。 vo...原创 2019-12-30 20:29:56 · 144 阅读 · 0 评论 -
并发工具类CyclicBarrier
import java.util.Random;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/** * CyclicBarrier的使用 */public class UseCyclicBarrier { private static...原创 2019-12-17 22:57:24 · 100 阅读 · 0 评论 -
并发工具类CountDownLatch
import java.util.concurrent.CountDownLatch;/** *并发工具类CountDownLatch */public class UseCountDownLatch { static CountDownLatch latch = new CountDownLatch(3); //初始化线程 private static class...原创 2019-12-16 00:01:25 · 90 阅读 · 0 评论 -
java 多线程join()方法
在A线程中调用了B线程的join()方法时,表示只有当B线程执行完毕时,A线程才能继续执行。public class JoinDemo { private static class JoinThread extends Thread{ private String name; public JoinThread(String name) { ...原创 2019-12-08 21:15:40 · 239 阅读 · 0 评论 -
线程休眠辅助工具类
import java.util.concurrent.TimeUnit;/** * 线程休眠辅助工具类 */public class SleepTools { /** * 按秒休眠 * @param seconds 秒数 */ public static final void second(int seconds){ t...原创 2019-12-05 17:28:32 · 943 阅读 · 0 评论 -
线程抛出InterruptedException,如何中断
/** * 抛出InterruptedException异常的时候,要注意中断标志位 */public class HasInterruptException { private static class UseThread extends Thread{ public UseThread(String name) { super(name)...原创 2019-12-03 09:45:56 · 465 阅读 · 0 评论 -
多线程等待和通知模式例子(wait()和notifyAll()应用)
public class Express { public final static String CITY = "ShangHai"; private int km; //快递运输里程数 private String site; //快递到达地点 public Express() { } public Express(int ...原创 2019-09-15 09:48:09 · 340 阅读 · 0 评论 -
java 安全中断线程
/** * 安全中断Thread类型的线程 */public class EndThread { private static class UseThread extends Thread{ public UseThread(String name) { super(name); } @Override...原创 2019-09-14 10:34:39 · 170 阅读 · 0 评论