并发
文章平均质量分 50
_自由之子_
这个作者很懒,什么都没留下…
展开
-
java并发控制,使用countDownLatch代替 synchronized,实时通知
有如下代码,当T1加到5的时候,T1通过notify来通知T2.这是synchronized 配合notify和wait的版本,只能保证消息通知到了,但不能保证T2可以立即执行,因为T1一直拿着lock的锁,只有加到10才能释放,T2拿到锁的时候,黄花菜都凉了/** * wait notfiy 方法,wait释放锁,notfiy不释放锁 * @author alienware *原创 2016-08-14 21:04:18 · 1248 阅读 · 0 评论 -
Quorum NWR
NWR是一种在分布式存储系统中用于控制一致性级别的一种策略。在Amazon的Dynamo云存储系统中,就应用NWR来控制一致性。让我们先来看看这三个字母的含义:N:同一份数据的Replica的份数W:是更新一个数据对象的时候需要确保成功更新的份数R: 读取一个数据需要读取的Replica的份数NWR值的不同组合会产生不同的一致性效果,当W+R>N的时候,整个系统对于转载 2017-07-05 20:15:37 · 497 阅读 · 0 评论 -
如何 简单确定系统 合理的线程数
和大牛聊天的时候得知,可以这么来 比如针对IO密集型的程序,一个请求时间是1秒的话,假如其中200ms是用在CPU上,800ms用在IO上,同时系统是8核的话,那么理论上系统的合理线程数是(1+4)*8=40个,另外考虑实际情况,系统的消耗等,应该是40*0.6或者0.7约等于24或者28个。大概如此了。。先行记录下来原创 2017-04-24 14:05:00 · 1680 阅读 · 0 评论 -
java thread dump 分析 死锁
昨天看到有人问:”一个程序在运行的时候,如何知道它是否发生死锁,如果发生死锁,如何找到发生死锁的位置?“;便贴了一段dump线程的数据,今天又有人问我怎么从dump文件中分析死锁,随做此文: 1、首先构造死锁,代码如下:public class Deadlocker { private static Object lock_1 = new int[1]; private s转载 2016-12-08 20:25:06 · 3975 阅读 · 0 评论 -
并发控制(8)使用executor并发框架来实现的生产消费者模型
并发控制(8)使用executor并发框架来实现的生产消费者模型executoer 本质上就是个线程池 根据具体业务场景,分为了public static ExecutorService newFixedThreadPool(int nThreads) 创建固定数目线程的线程池。public static ExecutorService newCachedThreadPool() 创建一个可原创 2016-08-22 17:37:52 · 369 阅读 · 0 评论 -
并发控制(7)信号量
并发控制(7)信号量Semaphore实现的功能就类似厕所有5个坑,假如有10个人要上厕所,那么同时只能有多少个人去上厕所呢?同时只能有5个人能够占用,当5个人中 的任何一个人让开后,其中等待的另外5个人中又有一个人可以占用了。另外等待的5个人中可以是随机获得优先机会,也可以是按照先来后到的顺序获得机会,这取决于构造Semaphore对象时传入的参数选项。典型的应用场景,可以是限制JAVA程序的原创 2016-08-22 16:28:57 · 408 阅读 · 0 评论 -
并发控制(6)ReentrantLock 重入锁
并发控制(6)ReentrantLock 重入锁这个锁基本上概念和synchronized关键字用法很像,但是在实现上和使用上的稳定性上貌似比synchronized要好.但是你在调用锁的时候,要注意释放,不然就麻烦了。。。其他线程没有办法使用资源了有如下代码import java.util.concurrent.CopyOnWriteArrayList;import java.util.原创 2016-08-21 20:19:53 · 272 阅读 · 0 评论 -
并发控制(5)使用CountDownLatch来控制多线程下的程序流程
并发控制(5)使用CountDownLatch来控制多线程下的程序流程CountDownLatch和CyclicBarrier的区别,其实比较简单,CountDownLatch对执行任务的线程。比如有A,B,C三个线程,那么如果A是设置了countDown.await()这个方法,那么B和C就只能等到A了,什么时候A准备好了,那么B和C才可以执行.典型的场景就是,比如A需要从远程服务器拿到某个资原创 2016-08-21 20:10:58 · 1517 阅读 · 0 评论 -
并发控制(4) 使用CyclicBarrier来控制多线程的执行流程
并发控制(4) 使用CyclicBarrier来控制多线程的执行流程简单理解就是,有A,B,C三个线程,主线程需要通过这3个线程加载制定的资源(流程),如果其中任意一个线程(资源)没有准备好,那都没有办法继续执行下去,这就是CyclicBarrier的作用,或者可以形象的理解为运动员比赛之前,需要统一准备好,才可以开始比赛import java.io.IOException; import j原创 2016-08-21 19:59:57 · 633 阅读 · 0 评论 -
并发控制(3) 使用double check方式的单例,来确保并发下的线程安全的单例模式
这是实现并发下懒汉模式,是线程安全的,叫做double check,另外一种是内部静态类,它们都可以实现多线程下的安全单例package com.bjsxt.base.conn011;public class DubbleSingleton { private static DubbleSingleton ds; public static DubbleSing原创 2016-08-15 21:10:50 · 828 阅读 · 0 评论 -
java并发控制(2),synchronized模拟阻塞队列
import java.util.LinkedList;import java.util.concurrent.atomic.AtomicInteger;import com.sun.org.apache.xerces.internal.parsers.CachingParserPool.SynchronizedGrammarPool;public class MyQueue { p原创 2016-08-15 20:30:24 · 920 阅读 · 0 评论 -
Kubernete 本地 开发/调试环境 minikube microk8s kubeadm拉取 k8s.gcr.io 问题
废话不说,linux下使用如下脚本,脚本非原创,主要是作者原理的阿里云镜像库改为了微软Azure源,其原理是调用的是微软Azure的源去下载的相关docker镜像,然后通过tag改名为本地镜像.#!/bin/bashset -e# Check version in https://kubernetes.io/docs/reference/setup-tools/kubeadm/kub...原创 2019-04-21 21:53:46 · 2812 阅读 · 1 评论