多线程
美好生活521
这个作者很懒,什么都没留下…
展开
-
Java 并发编程之 ConcurrentLinkedQueue
适用于高并发下对集合类进行操作的场景。常用的线程安全方法有offer,add,poll,peek,底层通过cas 实现对容器的原子操作。一个很简单的使用例子如下:public class ConcurrentLinkedQueueTest { private static Queue<String> coupons = new ConcurrentLinkedQueue<>(); public static void main(String[] arg原创 2021-07-22 14:09:56 · 248 阅读 · 0 评论 -
Java 并发编程之 LockSupport
LockSupport 可以用于阻塞当前线程的执行,以及唤醒指定的线程,常用的方法包括park() 和 unpark(thread),比wait和notify更灵活。public class LockSupportTest { public static void main(String[] args) { Thread thread = new Thread(() -> { for (int i=0; i<20; i++) {原创 2021-07-19 21:01:55 · 88 阅读 · 0 评论 -
Java 并发编程之 ConcurrentHashMap,ConcurrentSkipListMap
Java并发容器Map类有两个,ConcurrentHashMap和ConcurrentSkipListMap,前者是无序的,后者有序。public class ConcurrentHashMapTest { private static final int len = 20; public static void main(String[] args) { ConcurrentHashMap<String, String> map = new Concu原创 2021-04-24 15:07:55 · 173 阅读 · 0 评论 -
Java 并发编程之 CopyOnWriteArrayList
简单说就是读写分离,读不加锁,增删改时加锁复制,线程安全;写的效率比较低,相对Vector类读写都加锁,CopyOnWriteArrayList读的效率更高,适合读多写少,并且不要求实时一致性的使用场景。方法有:public boolean add(E e),public void add(int index, E element)public E set(int index, E element),public E get(int index)public E remove(int .原创 2021-04-24 13:43:28 · 230 阅读 · 0 评论 -
Java 并发编程之 FutureTask
FutureTask 类构造函数参数为 Callable 接口,实现 RunnableFuture 接口,而 RunnableFuture 接口继承了 Future 和 Runnable 接口,所以它既是一个线程,也可以有返回结果。使用栗子如下:1)定义一个Callable 任务public class CallableTask implements Callable<String> { private long sleepTime; public Call原创 2021-04-18 20:47:50 · 147 阅读 · 0 评论 -
Java 并发编程之 Callable 和 Future
ExecutorService 执行完Callable 任务后,返回 Future 对象,Future 对象包含线程的状态和结果对象。Future的get方法可以获得 Callable任务执行后的结果,isDone, isCanceled 方法判断线程状态。使用也很简单,public class CallableTest implements Callable<String> { public static void main(String args[]) {原创 2021-04-18 20:20:07 · 138 阅读 · 0 评论 -
Java 并发编程之线程池 ScheduledThreadPool
ScheduledThreadPool 为定时任务线程池1)定义任务线程public class Task implements Runnable { private String name; Task(String name) { this.name = name; } @Override public void run() { System.out.println(Thread.currentThread(...原创 2021-04-18 19:41:14 · 436 阅读 · 0 评论 -
Java 并发编程之自定义线程池 ThreadPoolExecutor
1)定义一个任务线程public class Task implements Runnable { private String name; Task(String name) { this.name = name; } @Override public void run() { System.out.println(Thread.currentThread().getName() + " Start." + name);原创 2021-04-18 15:57:31 · 188 阅读 · 0 评论 -
Java 并发编程之线程池 ExecutorService 接口
Java 并发编程任务执行Executor原创 2021-04-18 15:30:08 · 144 阅读 · 0 评论 -
Java 并发编程之同步工具类 Exchanger
Exchanger 交换器,用于两个线程之间交换数据。线程1调用exchange()方法,然后进行线程阻塞,等待线程2调用exchange()方法交换数据,线程2调用exchange()方法后,两个线程继续执行。例如:public class ExchangerTest { public void a (Exchanger<String> exch) { System.out.println("a 方法执行..."); try {原创 2021-04-05 19:59:29 · 124 阅读 · 0 评论 -
Java 并发编程之同步工具类栅栏 CyclicBarrier
Java 并发编程栅栏 CyclicBarrier原创 2021-04-05 19:58:13 · 142 阅读 · 1 评论 -
Java 并发编程之同步工具类信号量 Semaphore
Java 并发编程信号量 Semaphore原创 2021-04-05 19:58:00 · 120 阅读 · 2 评论 -
Java 并发编程之同步工具类闭锁 CountDownLatch
Java 并发编程闭锁 CountDownLatch原创 2021-04-05 19:57:50 · 91 阅读 · 2 评论 -
Java 并发编程之 ThreadLocal 线程局部变量
JAVA并发编程ThreadLocal 线程局部变量原创 2021-04-05 19:57:34 · 147 阅读 · 0 评论 -
Java 并发编程之读写锁 ReentrantReadWriteLock
ReentrantReadWriteLock 允许多个读操作同时进行,但是只允许一个写操作同时进行,在某些情况下,可以实现更高的并发性。举个栗子:public class ReadAndWriteLockTest { static { System.out.println("static "+Thread.currentThread().isDaemon()); } public static void main(String[] args) {原创 2021-04-05 19:57:12 · 121 阅读 · 1 评论 -
Java 并发编程之可重入锁 ReentrantLock
Java 并发编程显示锁 ReentrantLock原创 2021-04-05 13:55:43 · 118 阅读 · 1 评论 -
Java 并发编程之 Atomic 类
Java 并发编程任务取消原创 2021-04-05 12:37:35 · 101 阅读 · 1 评论 -
Java 并发编程之 volatile
Volatile 线程可见性原创 2021-04-05 11:22:24 · 79 阅读 · 0 评论 -
Java 并发编程之内置锁 synchronized
Java 并发编程内置锁 synchronized原创 2021-04-05 10:27:04 · 138 阅读 · 0 评论 -
Java 并发编程之创建线程,启动和常用方法
进程是处于运行过程中的程序;线程是进程中的一个执行单元;一个程序运行后至少有一个进程,一个进程中可以包含多个线程。1)继承 Thread 类public class MyThread extends Thread{ @Override public void run() { for (int i=0; i<5; i++) { try { TimeUnit.SECONDS.sleep(1);原创 2021-04-03 21:08:48 · 113 阅读 · 0 评论