上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 26 下一页

2018年8月2日

Java并发编程原理与实战十五:手动实现一个可重入锁

摘要: package com.roocon.thread.ta1; 运行结果: 现在来模拟下,基于以上代码,锁是否可重入: 分析以上运行结果: 线程1调用a方法,第一次进入lock方法,去获取锁。此时,isLocked为false,于是将标志锁改为true。然后,输出a。再去执行b方法。此时,再次去调用l 阅读全文

posted @ 2018-08-02 08:04 pony1223 阅读(302) 评论(0) 推荐(0)

Java并发编程原理与实战十四:Lock接口的认识和使用

摘要: 保证线程安全演进: synchronized volatile AtomicInteger Lock接口提供的方法: void lock():加锁 void unlock():解锁 void lockInterruptibly():在多个线程并发获取锁的时候,那么,当有些线程拿不到锁时会等待,会不停 阅读全文

posted @ 2018-08-02 08:00 pony1223 阅读(281) 评论(0) 推荐(0)

Java并发编程原理与实战十三:JDK提供的原子类原理与使用

摘要: 原子更新基本类型 原子更新数组 原子更新抽象类型 原子更新字段 原子更新基本类型: 运行结果: 运行结果: 对CAS的源码理解:--初步理解 在AtomicInteger中有这样一段源码: 其中,compareAndSwap就是CAS的缩写。如果prev和next不相等,则返回true。否则,返回f 阅读全文

posted @ 2018-08-02 07:57 pony1223 阅读(251) 评论(0) 推荐(0)

2018年7月27日

Java并发编程原理与实战十二:深入理解volatile原理与使用

摘要: volatile:称之为轻量级锁,被volatile修饰的变量,在线程之间是可见的。 可见:一个线程修改了这个变量的值,在另一个线程中能够读取到这个修改后的值。 synchronized除了线程之间互斥之外,还有一个非常大的作用,就是保证可见性。以下demo即保证a值的可见性。 首先来看demo: 阅读全文

posted @ 2018-07-27 00:12 pony1223 阅读(438) 评论(0) 推荐(0)

Java并发编程原理与实战十一:锁重入&自旋锁&死锁

摘要: 一、锁重入 运行结果: 以上结果说明,线程A在释放方法a的同步锁之前,是可以重新获得b方法的同步锁的。同一个线程拿到同一个对象的锁,它是可以进入另一个同步方法的,这就是锁的重入。以上代码仅仅是同一个线程在一个同步方法中去成功调用另一个同步方法,并且,锁的是同一个实例。那么,不同的线程拿同一把对象去加 阅读全文

posted @ 2018-07-27 00:09 pony1223 阅读(485) 评论(0) 推荐(1)

Java并发编程原理与实战十:单例问题与线程安全性深入解析

摘要: 单例模式我想这个设计模式大家都很熟悉,如果不熟悉的可以看我写的设计模式系列然后再来看本文。单例模式通常可以分为:饿汉式和懒汉式,那么分别和线程安全是否有关呢? 一、饿汉式 先看代码: 运行结果: 所谓的饿汉模式:不管是否使用到instance这个实例,我们都在创建的过程中就对它进行实例化。 那么,饿 阅读全文

posted @ 2018-07-27 00:01 pony1223 阅读(413) 评论(0) 推荐(0)

2018年7月25日

Java并发编程原理与实战九:synchronized的原理与使用

摘要: 一、理论层面 内置锁与互斥锁 修饰普通方法、修饰静态方法、修饰代码块 二、JVM层面 查看xx方法同步代码块字节码: 查看同步方法字节码: 任何对象都可以作为锁,那么锁信息又存在对象的什么地方呢? 存在对象头中。 对象头中的信息: Mark Word Class Metadata Address 类 阅读全文

posted @ 2018-07-25 23:53 pony1223 阅读(728) 评论(0) 推荐(0)

2018年7月24日

Java并发编程原理与实战八:产生线程安全性问题原因(javap字节码分析)

摘要: 前面我们说到多线程带来的风险,其中一个很重要的就是安全性,因为其重要性因此,放到本章来进行讲解,那么线程安全性问题产生的原因,我们这节将从底层字节码来进行分析。 一、问题引出 先看一段代码 运行结果:仔细发现,出现了两个84,但代码想要的结果是,每个线程每次执行,就在原来的基础上加一。因此,这里就是 阅读全文

posted @ 2018-07-24 23:23 pony1223 阅读(619) 评论(0) 推荐(0)

Java并发编程原理与实战七:线程带来的风险

摘要: 在并发中有两种方式,一是多进程,二是多线程,但是线程相比进程花销更小且能共享资源。但使用多线程同时会带来相应的风险,本文将展开讨论。 一、引言 多线程将会带来几个问题: 1、安全性问题 线程安全性可能是非常复杂的,多线程中的操作执行顺序是不可预测的,甚至会产生奇怪的结果,另外由于存在指令重排序的可能 阅读全文

posted @ 2018-07-24 22:43 pony1223 阅读(401) 评论(0) 推荐(0)

2018年7月23日

Java并发编程原理与实战六:主线程等待子线程解决方案

摘要: 本文将研究的是主线程等待所有子线程执行完成之后再继续往下执行的解决方案 首先是一个线程,它执行完成需要5秒。 1、主线程等待一个子线程 在主线程中,需要等待子线程执行完成。但是执行上面的main发现并不是想要的结果: 子线程执行时长:0Thread-0子线程开始Thread-0子线程结束 很明显主线 阅读全文

posted @ 2018-07-23 23:59 pony1223 阅读(6223) 评论(0) 推荐(0)

上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 26 下一页

导航