多线程
文章平均质量分 87
xuehuagongzi000
这个作者很懒,什么都没留下…
展开
-
JAVA应用中线程池设置多少合适?
上面的例子中,程序不停的循环什么都不做,CPU 要不停的执行指令,几乎没有啥空闲的时间。如果插入一段 I/O 操作呢,I/O 操作期间 CPU 是空闲状态,CPU 的利用率会怎么样呢?只有9 号核心的利用率较高,大但也才 50%,和前面没有 sleep 的 100% 相比,已经低了一半了。此时再看 CPU 利用率,1/2/5/7/9/11 几个核心的利用率已经被跑满。从图上可以看到,我的 3 号核心利用率已经被跑满了。单个核心的利用率 60 左右。原创 2023-11-05 22:22:41 · 397 阅读 · 0 评论 -
多线程面试总结
(1)、synchronize和lock有什么区别?底层都是如何实现的?synchronize是不是可重入锁? (2)、threadLocal (3)、volatile (4)、线程池的原理,核心参数的含义,有哪些拒绝策略原创 2020-06-20 17:39:52 · 577 阅读 · 1 评论 -
java的volatile关键字之非线程安全
volatile 用volatile修饰的变量,线程在每次使用变量的时候,都会读取主存中变量的最新值。volatile不能用来进行原子性操作。 下面看一个例子,我们实现一个计数器,每次线程启动的时候,会调用计数器inc方法,对计数器进行加一 执行环境——jdk版本:jdk1.6.0_31 ,内存 :3G cpu:x86 2.4G转载 2017-10-10 23:46:44 · 307 阅读 · 0 评论 -
ArrayBlockingQueue源码分析
原文来自:https://blog.csdn.net/xin_jmail/article/details/26157971 ArrayBlockingQueue是一个由数组支持的有界阻塞队列,也是一个循环队列。此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部 是在队列中存在时间最长的元素,队列的尾部 是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列检索操作则是从队列头部转载 2018-03-25 18:01:49 · 211 阅读 · 0 评论 -
多线程并发工具包的使用(未完待续)
1、Semaphore的使用1.1 原理介绍Semaphore是信号灯的意思,多个线程同时运行,但是他们运行的时候要查询这个灯是不是亮的。只要每个线程获得(acquire)了一个信号灯,那么它就可以运行了。线程运行结束后,它要把信号灯给释放掉(release),其他的线程才能执行。当信号灯占满时,一个线程执行完,另一个线程开始获得该semaphore执行,来实现生产者和消费者模式。1.2 Se...原创 2018-03-25 18:03:33 · 603 阅读 · 0 评论