java多线程编程
郎总
这个作者很懒,什么都没留下…
展开
-
彻底搞清楚 java 多线程单例模式(singleton)的双重检查锁
不涉及多线程的情况下实现单例模式是非常简单的,有两种实现方式,Lazy 和 Eager 模式: public class SingletonEager { //Eager模式,当Singleton被ClassLoader加载的时候创建Singleton对象 private static SingletonEager _instance = new SingletonEager(...原创 2019-04-02 09:43:10 · 200 阅读 · 0 评论 -
Java 多线程 锁重入的理解
// 锁的重入,synchronized是可重入的 public class Demo { public synchronized void a(){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(...原创 2019-04-02 10:04:41 · 187 阅读 · 0 评论 -
java 使用synchronized, wait(), notifyAll() 实现生产者-消费者模式
对于任何一种模式,在实现之前我们都应该明确这种模式对线程同步及互斥的要求。对于生产者-消费者模式, 我们有如下同步及互斥要求: 线程互斥要求 生产者之间是互斥的,也即同时只能有一个生产者进行生产 消费者之间是互斥的,也即同时只能有一个消费者进行消费 生产者消费者之间是互斥的,也即生产者消费者不能同时进行生产和消费 线程同步要求 容器满时,生产者进行等待 容器空是,消费者进行等待 有了上述需...原创 2019-04-02 10:32:44 · 575 阅读 · 0 评论 -
java 实现一个同步的stack
用java 实现了一个线程安全的栈(参考了tomcat源码) public class SynchronizedStack<T> { public static final int DEFAULT_SIZE = 128; private static final int DEFAULT_LIMIT = -1; private int size; ...原创 2019-04-08 00:02:40 · 315 阅读 · 1 评论 -
java 使用信号量Semaphore实现生产者-消费者模式
这是继许上一篇java 使用synchronized, wait(), notifyAll() 实现生产者-消费者模式。 信号量Semaphore,跟交通信号等非常类似(Semaphore翻译过来就是信号灯的意思),以下面这幅图为例 如果两条铁轨都是空的,那么此时信号灯是绿色(信号量为2),允许火车通行。如果有列车请求通行则放行,同时信号灯变为黄色(信号量减一): 当两条铁轨都有列车...原创 2019-04-03 10:24:01 · 3047 阅读 · 1 评论 -
java 使用管程(monitor) 实现生产者-消费者模式
这是继java 使用synchronized, wait(), notifyAll() 实现生产者-消费者模式的下一篇。 让我们先来看看什么是管程。管程的英文叫Monitor, 翻译过来时监视器的意思。为什么要使用管程呢? 之前使用信号量实现了同步互斥,但是信号量有个一个缺点,那就是P操作和V操作很容易搞错,如果一个地方进行了P操作,同步代码块执行完毕后忘记执行V操作,那么很容易引起死锁、饥饿等...原创 2019-04-23 13:12:16 · 1683 阅读 · 1 评论