- 博客(12)
- 问答 (1)
- 收藏
- 关注
原创 Java并发编程的艺术-----第五章读书笔记
前言:哇,这一章是真的费劲,以前是知其然,这次探索了如此多的同步组件的源码,终于是知其所以然了。 下一步也能开发自己的同步组件了,嘎嘎。- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -...
2018-09-30 17:17:26 453
原创 Java并发编程的艺术-----第四章读书笔记
4.1.2 为什么要使用多线程? 一个线程在同一时刻只能运行在一个处理器核心上。如果程序使用多线程,那么程序就会被分配到多个处理器核心上,这样就会显著减少程序的处理时间,并且随着更多处理器核心的加入,程序的执行会变得更有效率。P84 使用多线程的程序:耗时少,效率高。 4.1.3 线程会得到OS分配的若干时间片,当线...
2018-09-21 11:12:52 317
原创 Java并发编程的艺术-----第三章读书笔记
3.1 原文:Java线程之间的通信由Java内存模型(JMM)控制,JMM决定一个线程对共享变量的写入何时对另外一个线程可见。P22 Java内存模型JMM定义了写到本地内存中的数据何时刷新到主存中。 原文:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存,本地内存存储了该线程的共享变量的副本。P22 线程之...
2018-09-19 09:26:06 432
原创 Java并发编程的艺术-----第二章读书笔记
1.1 原文:时间片是CPU分配给各个线程的时间。P1 时间片是CPU分配给各个线程的时间,一般是几十毫秒。 原文:上下文切换P1 任务从保存到再加载的过程是一次上下文切换。一个任务可能没有执行完毕就释放了锁,再次争抢同步锁并读取线程内的私有工作内存需要一定的时间,或者说是性能消耗。1.1.2 并发执行的...
2018-09-18 10:07:36 302
原创 ReentrantReadWriteLock实现原理探索
一、读写锁基本特性 我们知道,对锁性能的优化其中有一条:如果操作互不影响,那么锁就可以被分离。这就是锁分离的思想。 ReentrantReadWriteLock可重入的读写锁。读写锁在同一时刻允许多个读线程访问,但是在写线程访问时,所有的读线程和其他线程均被阻塞。 ReentrantReadWriteLock内部有两把锁,一把读锁,一把写...
2018-09-14 16:36:12 424
原创 原子操作类的使用
参考文章:https://blog.csdn.net/tlk20071/article/details/75729675一、自增:不加锁线程不安全public class AtomicDemo { //定义一个共享变量 private int value; //获取共享变量 public int getValue() { return ...
2018-09-13 17:37:27 436
原创 重拾心态,一个菜鸟的自我对话
早上心态崩了,为什么这些东西这么难,这些东西到底有什么用? 好吧,我又一次怀疑人生了,但是脑海中一直有一个声音反驳那个问题:“学这些有什么用?又用不到!”。 我好像把"不会"与"不用"因果关系弄颠倒了,我是因为 不用才不会 呢 ,还是 不会才不用 呢? 半个小时又过去了,仿佛又浪费了一段时光。 每次在想放弃的时...
2018-09-13 10:45:47 520 1
原创 Java 虚拟机对 synchronized 锁的优化
一、volatile 与 synchronized 关键字 的原理 Java代码首先会被编译成字节码文件。字节码文件被加载到JVM中,JVM将字节码翻译成汇编指令,从而在CPU中执行。 谈到volatile关键字,就会想到两点: (1)让变量在多个线程之间可见,并且强制线程从公共堆栈中取得变量的值(常见的从变量和线程的角度分别阐释)。...
2018-09-11 16:35:47 528
原创 ThreadLocal线程局部变量浅析
一、ThreadLocal的基本定义 官方定义:当使用 ThreadLocal 维护(set)变量时,ThreadLocal 为每个使用该变量的线程提供(get)独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 ThreadLocal 并不是一个 Thread,而是 线程Thread的一个局部变量。 什...
2018-09-07 14:56:41 820
原创 异步调用--Future模式:返回伪造数据
一、Future模式的基本思想 如果某个方法的执行过程非常耗时,并且我们又不着急要这个方法的返回结果。 假设在单线程情况下,我们就必须要等待。 这个时候,可以修改此耗时的方法,让其立即返回客户端一个伪造的数据。 并且,在这个耗时的方法中开启另外一条线程,在后台慢慢计算。 主线程继续执行。 如...
2018-09-06 14:22:50 1327
原创 常用的线程计数器CountDownLatch与CyclicBarrier
一、CountDownLatch类语法要点 (1)构造函数接收计数器的值。 (2)被计数的任务线程执行完毕后,记得调用一次 latch.countDown()方法,提示CountDownLatch对象,当前线程已经执行完毕。 (3)在需要等待多个任务执行完毕后,在需要同步的地方,使用 latch.await()方法进行阻塞。再次恢复任务执...
2018-09-05 10:52:19 490
原创 线程的状态
在 java.lang.Thread.State类中,定义了线程的状态。 线程的状态 New New状态是线程实例化后还没有执行start()方法的状态。new Thread().getState(); RUNNABLE 线程进入运行的状态。 即 Thread t1 = new Thread(); t1.sta...
2018-09-05 10:47:57 196
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人