JUC
java多线程
周莫客
人未老,心不死
展开
-
创建线程的4中方式
1、继承Thread类2、实现Runnable接口3、实现Callable接口4、通过线程池创建package com.mock;import org.junit.jupiter.api.Test;import java.util.concurrent.*;public class TestThread { /** * 继承Thread类 */ ...原创 2019-12-22 22:21:16 · 178 阅读 · 0 评论 -
读写锁ReadWriteLock
ReadWriteLock可以多个线程读,读锁可以多个线程持有,但是写锁是独享的package com.mock;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;public class TestReadWriteLock {...原创 2019-12-22 22:05:28 · 165 阅读 · 0 评论 -
使用Lock Condition交替打印ABC
使用Lock Condition交替打印ABCpackage com.mock;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class TestPrint...原创 2019-12-22 21:43:17 · 491 阅读 · 1 评论 -
使用Condition加Lock解决生产者消费者问题
使用Condition加Lock解决生产者消费者问题package com.mock;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class TestPr...原创 2019-12-22 20:51:06 · 139 阅读 · 0 评论 -
生产者消费者问题虚假唤醒
生产者消费者问题演示及解决问题一:package com.mock;import org.junit.jupiter.api.Test;public class TestProducerAndConsumer { @Test public void test() { Product p = new Product(); new Threa...原创 2019-12-22 20:45:50 · 217 阅读 · 0 评论 -
同步锁Lock
使用Lock可以使多线程数据安全多线程安全问题:package com.mock;import org.junit.jupiter.api.Test;public class TestLock { @Test public void test() throws InterruptedException { ThreadLock tl = new Thre...原创 2019-12-22 19:31:54 · 146 阅读 · 0 评论 -
CountDownLatch
CountDownLatch可以使某个线程等待其他线程执行完成之后才执行代码逻辑package com.mock;import org.junit.jupiter.api.Test;import java.time.Duration;import java.time.Instant;import java.util.concurrent.CountDownLatch;public...原创 2019-12-22 18:54:37 · 161 阅读 · 0 评论 -
原子性及CAS算法
java.util.concurrent.atomic 包下提供了一些原子变量非原子性操作问题:package com.mock;import org.junit.jupiter.api.Test;public class TestAtomic { @Test public void test() throws InterruptedException { ...原创 2019-12-22 18:33:13 · 262 阅读 · 0 评论 -
volatile关键字
volatile关键字是为了解决线程之间共享变量不可见问题。会强制刷新主内存的变量使线程能拿到最新的变量。线程之前共享变量不可见问题:package com.mock;import org.junit.jupiter.api.Test;public class TestVolatile { /** * 主线程永远不会打印消息 */ @Test ...原创 2019-12-22 17:20:11 · 103 阅读 · 0 评论