Java 多线程
不务正业的野猴子
这个作者很懒,什么都没留下…
展开
-
《java 多线程编程核心技术》读书笔记一
背景知识 涉及多线程编程时都会考虑线程安全的问题,那什么是非线程安全呢? 非线程安全:多个线程对同一个对象的同一个全局变量进行操作时会出现值被更改、值不同步的情况,进而影响程序的执行流程 *该书作者在解释非线程安全时提到的是实例变量,而我在本文中使用的是全局变量,若我理解错了希望各位能够指出! 基础知识 实现方式 在java.lang包下提供了两种实现多线程的方式 ...原创 2017-07-15 16:10:43 · 387 阅读 · 0 评论 -
《java 多线程编程核心技术》读书笔记二
多线程环境下的单例 饿汉模式:线程安全,在类加载的时候就初始化了,以空间换时间,占用内存 懒汉模式:非线程安全,在调用时初始化,以时间换空间,每次都需要消耗时间判断是否已初始化 懒汉模式在多线程的情况下会创建多个实例对象,其原因在于如下代码 if(obj==null){ //在实例化MyObject对象之前,如果其它线程已经执行了obj==null的判断,则会创建多个实例对象 ...原创 2017-07-29 11:20:05 · 207 阅读 · 0 评论 -
《java 多线程编程核心技术》读书笔记三
背景知识补充: 局部变量是线程安全的,局部变量属于线程私有的,在线程间不共享 类变量是非线程安全的,在多个实例之间、多个线程之间都是共享的 实例变量属于对象,在多个对象间不共享,当多个线程操作同一个对象的实例变量时,该变量将在多个线程中共享,则会导致非线程安全问题,但当多个线程分别操作同一个类的不同对象时,该变量只存在于当前线程中,故不会导致非线程安全问题 为了解决线程不安全的问题,jav...原创 2020-04-04 16:38:34 · 275 阅读 · 0 评论 -
《java 多线程编程核心技术》读书笔记三(补充内容)
在java中根据是否有static关键字修饰,方法可分为 类方法、实例方法 synchronized public static void methodA(){} synchronized public void methodB(){} 那这两种方法在加上synchronized关键字后其同步效果是否一致呢? 接下来我们通过代码来验证下 public class Services ...原创 2017-08-13 10:46:22 · 235 阅读 · 0 评论 -
《java 多线程编程核心技术》读书笔记四
同步方法对整个方法进行同步限制,保证一个线程在调用该方法时,其它线程需要等待前一个线程释放锁后才能进入。但方法中可能只有部分语句涉及共享内容操作,这时如果还对整个方法进行同步限制的话,则会影响程序的整体执行时间。 java中提供了同步代码块的方式来限制部分语句的同步,将需要同步执行的代码放到同步代码块中执行,可以异步执行的代码放到同步代码块之外。 public class Service ...原创 2017-08-17 08:53:38 · 318 阅读 · 0 评论 -
《java 多线程编程核心技术》读书笔记五
在前面的笔记中我们已经认识了synchronized 、volatile关键字 synchronized:用于方法、代码块,使拥有相同锁的方法、代码块在多个线程中以同步的方式调用 volatile:用于变量(variable)声明处,使对该变量的修改在多个线程中可见 在本文中我们将认识wait()、notify()、notifyall() 关键字,我们先通过一个生活中常见的场景来解释wait...原创 2017-08-22 21:30:48 · 194 阅读 · 0 评论 -
《java 多线程编程核心技术》读书笔记六
ReentrantLock、ReentrantReadWriteLock ReentrantLock lock()、unlock()这两个方法之间的代码为线程同步执行 持有相同锁的方法均为同步执行 Condition await() 等同 Object中的wait() signal() 等同Object中的notify() signalAll() 等同Object中的notify...原创 2017-08-27 10:09:10 · 305 阅读 · 0 评论