![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC线程
上了年纪的人还能怎样
这个作者很懒,什么都没留下…
展开
-
线程调度
package com.yang;import java.util.Random;import java.util.concurrent.Callable;import java.util.concurrent.Executors;import java.util.concurrent.Future;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;/* *原创 2021-01-16 23:37:48 · 83 阅读 · 0 评论 -
线程池
package com.yang;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;/* * 一、线程池:提供了一个线程队列,队列中保原创 2021-01-16 23:36:41 · 70 阅读 · 0 评论 -
读写锁
package com.yang;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/* * 1. ReadWriteLock : 读写锁 * * 写写/读写 需要“互斥” * 读读 不需要互斥 * */public class TestReadWriteLock { public static void main(St原创 2021-01-16 23:34:38 · 115 阅读 · 0 评论 -
线程按序交替
编写一个程序,开启3个线程,这三个线程的ID分别为A,B,C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按照顺序显示ABCABC。。。。。依次递归package com.yang;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/* * 编写一个程序,开启 3 个线原创 2021-01-16 23:23:32 · 81 阅读 · 0 评论 -
JUC线程高级 生产者 消费者案例
package com.yang;public class TestProductorAndConsumer { public static void main(String[] args) { Clerk clerk = new Clerk(); Productor pro = new Productor(clerk); Consumer cus = new Consumer(clerk); new Thread(pro, "生产者 A").start(); new原创 2021-01-16 22:19:15 · 140 阅读 · 1 评论 -
Lock同步锁
import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/* * 一、用于解决多线程安全问题的方式: * * synchronized:隐式锁 * 1. 同步代码块 * * 2. 同步方法 * * jdk 1.5 后: * 3. 同步锁 Lock * 注意:是一个显示锁,需要通过 lock() 方法上锁,必须通过 unlock() 方法进行释放锁 */p.原创 2021-01-16 16:48:36 · 82 阅读 · 0 评论 -
线程实现callable接口
package com.yang;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;public class TestVolatile { public static void main(String[] args) { //相比较实现Runable接口而言有返回值,可以抛出异常 Th原创 2021-01-16 15:11:14 · 106 阅读 · 0 评论 -
模拟CAS算法
package com.yang;public class TestVolatile { public static void main(String[] args) { final ThreadDemo td=new ThreadDemo(); for (int i = 0; i < 20; i++) { new Thread(new Runnable() { public void run() { int excepted=td.getValue()原创 2021-01-16 13:05:23 · 64 阅读 · 0 评论 -
JUC线程 原子变量与CAS算法
package com.yang;import java.util.concurrent.atomic.AtomicInteger;public class TestVolatile { public static void main(String[] args) { ThreadDemo td=new ThreadDemo(); for (int i = 0; i < 20; i++) { try { Thread.sleep(200); } c原创 2021-01-15 23:35:33 · 77 阅读 · 0 评论 -
JUC线程的volatile关键字
JUC线程Volatile关键字保证内存可见性,不具备互斥性,不能保证变量的原子 性。相比较synchronized 是一种较为轻量级的同步策略。package com.yang;public class TestVolatile { public static void main(String[] args) { ThreadDemo td=new ThreadDemo(); new Thread(td).start(); while (true) {//原创 2021-01-14 23:55:34 · 71 阅读 · 0 评论