
并发
文章平均质量分 71
wxy941011
这个作者很懒,什么都没留下…
展开
-
Volatile详解
之前研究了一下内存模型,java内存模型中很关键的一点就是Volatile,现在跟大家探讨一下Volatile的知识吧1.volatile关键字的两层语义 一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 2)禁止进行指令重排序...原创 2018-05-25 19:31:27 · 290 阅读 · 0 评论 -
如何合理配置线程池的大小
一般需要根据任务的类型来配置线程池大小: 如果是CPU密集型任务,就需要尽量压榨CPU,参考值可以设为 NCPU+1 如果是IO密集型任务,参考值可以设置为2*NCPU 当然,这只是一个参考值,具体的设置还需要根据实际情况进行调整,比如可以先将线程池大小设置为参考值,再观察任务运行情况和系统负载、资源利用率来进行适当调整。与CPU密集型的关系: 一般情况下,C...原创 2018-07-02 00:30:39 · 3587 阅读 · 0 评论 -
CAS
一、什么是CASCAS,compare and swap的缩写,中文翻译成比较并交换。我们都知道,在java语言之前,并发就已经广泛存在并在服务器领域得到了大量的应用。所以硬件厂商老早就在芯片中加入了大量直至并发操作的原语,从而在硬件层面提升效率。在intel的CPU中,使用cmpxchg指令。在Java发展初期,java语言是不能够利用硬件提供的这些便利来提升系统的性能的。而随着java不断的发...原创 2018-06-27 00:17:19 · 246 阅读 · 0 评论 -
CAS自旋volatile变量
我们先来看一下AtomicInteger类的getAndIncrement的源代码: public final int getAndIncrement() { for (;;) { int current = get(); // 取得AtomicInteger里存储的数值 ...原创 2018-06-27 00:19:44 · 7108 阅读 · 1 评论