最新日志

2019-12-27 aflfte2011

ThreadLocal的使用(查看线程存储空间)

package com.aflfte.others;
/**
 * ThreadLocal:表示的是每个线程自身的存储本地、局部区域,更改不会影响其它线程
 * get/set/initialValue方法的使用
 * @author jinhao
 *
 */
public class ThreadLocalTest01 {

2019-12-27 aflfte2011

DCL单例模式

package com.aflfte.others;
/**
 * DCL单例模式
 * 懒汉式套路基础上加入并发控制:保证在多线程环境下对外只存在一个对象
 * 1、构造器私有化-->避免外部new构造器
 * 2、提供私有的静态属性-->存储对象的地址
 * 3、提供公共的静态方法-->获取属性
 * 
 * double-checked lo

2019-12-27 aflfte2011

Volatile的使用

package com.aflfte.others;
/**
 * Volatile的使用
 * 保证数据的同步,也就是可见性
 * 
 * @author jinhao
 *
 */
public class VolatileTest {
private volatile stati

2019-12-27 aflfte2011

指令重排测试

package com.aflfte.others;
/**
 * 指令重排:
 * 指代码执行顺序与预期不一致
 * 
 * @author jinhao
 *
 */
public class HappenBefore {
//变量一

2019-12-27 aflfte2011

任务调度:定时执行任务

package com.aflfte.others;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Timer;
import java.util.TimerTask;

/**
 * 任务调度:
 * Timer和TimerTask类使用
 * 

2019-12-27 aflfte2011

协作模式:信号灯法

package com.aflfte.cooperation;
/**
 * 协作模式:生产者与销费者实现方式二:信号灯法
 * 借助标志位实现
 * @author jinhao
 *
 */
public class CoTest02 {
public static void main(String[] args)

2019-12-26 aflfte2011

协作模型:管程法

package com.aflfte.cooperation;
/**
 * 协作模型:管程法
 * 管程法模式(生产者与消费者模式)
 * 借助缓冲区实现数据的快速读写操作
 *
 * @author root
 *
 */
public class CoTest01 {
    public static voi

2019-12-26 aflfte2011

死锁的产生与解决方案

package com.aflfte.syn;
/**
 * 死锁的产生与解决方案
 * 过多的使用同步可能会造成相互不释放资源
 * 从而相互等待,一般发生于同步中持有多个对象的锁
*解决死锁:不要在锁内再套锁造成资源无法释放
 * @author root
 *
 */
public class DeadLock {
    

2019-12-26 aflfte2011

并发模拟示例

示例一:模拟在线购票
package com.aflfte.syn;
/**
 * 快乐火车票
 * @author root
 *
 */
public class Happy12306 {
    public static void main(String[] args) {
        We

2019-12-26 aflfte2011

多线程安全同步(synchronized的使用方法)

package com.aflfte.syn;
/**
 * 线程安全:在并发时保证数据的准确性,效率尽可能高
 * 通过Synchronized实现
 * 1、同步方法
 * 2、同步块
 * 
 * @author jinhao
 *
 */
public class SynTest01 {

<

1 2 3 4 5 6 7 8 9 ... »