并发编程
小污鲨
目前一学生!
展开
-
按顺序执行线程
目录概述使用方法优点:精准的通知和唤醒线程案例:按顺序打印出 A、B、C概述Condition接口提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式。使用方法Condition定义了等待/通知两种类型的方法,当前线程调用这些方法时,需要提前获取到Condition对象关联的锁。Condition对象是由Lock对象(调用Lock对象的newCondition()方法)创建出来的,换句话说,Condition是依赖Lock对象的。/*** 代码中的* condition.原创 2020-12-02 16:50:45 · 224 阅读 · 0 评论 -
卖票问题 - 三种解决方法
目录二级目录三级目录案例:卖票出现的问题解决方法:方式一:同步代码块方式二:同步方法方式三:Lock锁二级目录三级目录案例:卖票/** 例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的方式 * @author dsstart * @create 2020-11-30 13:28 */public class SellTicket implements Runnable { private int ticket = 100; @Overrid原创 2020-11-30 18:16:04 · 1685 阅读 · 5 评论 -
线程八锁详解
线程八锁得到的结论:非静态方法的锁默认为 this, 静态方法的锁为 对应的 Class 实例某一个时刻内,只能有一个线程持有锁,无论几个方法。论证过程:1、八锁案例:判断打印的 “one” or “two”两个普通同步方法,两个线程,标准打印, 打印? //one twopublic class TestThread8Monitor { public static void main(String[] args) { Number number1 = new Numbe原创 2020-07-17 10:13:00 · 936 阅读 · 0 评论 -
ReadWriteLock 读写锁
在解决并发场景中线程安全问题时,通常使用java提供的关键字synchronized或者concurrents包中实现了Lock接口的ReentrantLock。它们都是独占式获取锁,也就是在同一时刻只有一个线程能够获取锁。而在一些业务场景中,大部分只是读数据,写数据很少,如果仅仅是读数据的话并不会影响数据正确性(出现脏读),而如果在这种业务场景下,依然使用独占锁的话,很显然这将是出现性能瓶颈的地方。针对这种读多写少的情况,java还提供了另外一个实现java.util.concurrent.locks..原创 2020-07-17 09:34:24 · 127 阅读 · 0 评论