并发
文章平均质量分 90
秃头哥编程
这个作者很懒,什么都没留下…
展开
-
Zookeeper + Curator实现分布式锁
在分布式系统下,使用Java中的synchronized或者Lock已经不能满足需求了。关于分布式锁的实现,我们可以利用MySQL的唯一索引去实现,也可以利用Redis的SETNX,同样也可以使用Zookeeper的节点唯一路径去实现。(1)线程先去/locks路径下面创建一个带序号的临时节点。(2)判断自己创建的这个节点是不是/locks路径下序号最小的节点,如果是,则获取锁;如果不是,则监听自己的前一个节点。(3)获取到锁后,处理自己的业务逻辑,然后删除自己创建的节点。监听它的后一个节点收到通知原创 2021-12-06 22:24:22 · 1096 阅读 · 0 评论 -
并发基础知识之线程的基本概念
1.创建线程线程表示一条单独的执行流,它有自己的程序执行计数器,有自己的栈。创建线程有两种方式:一种是继承Thread,另外一种是实现Runnable接口。(1)继承ThreadJava中java.lang.Thread这个类表示线程,一个类可以继承Thread并重写run方法来实现一个线程。public class MyThread extends Thread { ...原创 2018-05-17 13:28:06 · 323 阅读 · 0 评论 -
并发基础知识之synchronized关键字
上一篇文章我总结了一下线程的创建方法以及线程的一些属性,同时还讲了线程的共享以及带来的原子性和内存可见性的问题。这篇文章就讲讲怎么用synchronized关键字解决那两个问题。1.synchronized的用法和基本原理synchronized可以修饰实例方法,静态方法和代码块。上篇我们讲了一个counter计数器的问题,由于counter++不是一个原子操作,所以在多线程中...原创 2018-05-17 19:52:26 · 330 阅读 · 0 评论 -
并发基础知识之线程间的协作
多线程除了我们前面讲的竞争,其实还有协作。就像我们人一样,不但要竞争,也要学会合作,这样才能进步。这篇文章我们就讲讲多线程协作的基本机制wait/notify。同时使用多线程实现生产者/消费者模式。1.协作的场景多线程协作的场景有很多,比如:经典的生产者/消费者模式:生产者消费者通过共享队列实现协作,生产者往队列中放数据,消费者向队列中取数据,当队列满了的时候,生产者就不能再...原创 2018-05-18 14:07:53 · 360 阅读 · 0 评论