随笔分类 - 多线程并发相关
摘要:单例模式在实现上,有以下几点要求: (1) 构造器私有化 (2) 自行创建,并且用静态变量保存 (3) 向外提供这个实例 (4) 强调这是一个单例,用static关键字修饰 按照创建实例的时机,又有懒汉式和饿汉式两种实现模式。 饿汉式:在类的初始化时就创建实例,所以不存在线程安全问题: 1 pack
阅读全文
摘要:问题引入:在多线程环境下,如何保证自己的变量不被其他线程篡改? Spring如何处理Bean在多线程下的线程安全问题? 先看一个线程不安全的例子: 根据不考虑多线程的代码语义可知,我们期望静态变量经每个线程修改后变成该线程的编号并打印。 1 public class ThreadLocalDemo
阅读全文
摘要:Semaphore(信号量)用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。 模拟此类情景,例如某停车地点有3个停车位,只允许3辆车同时停车,共有6辆车,3辆抢先进入停车位,其他车俩排队,待前面三辆车出停车位后再进入。 1 import java.util.conc
阅读全文
摘要:同步工具类的使用大大方便了多线程并发的操作。CountDownLatch 是一个 java.util.concurrent下的同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。这种需求如果使用基本的线程通信来操作的确过于繁琐。使用CountDownLatch工具类大大提高了这类问
阅读全文
摘要:实现多线程的三种方法: 1,继承Thread,重写run()方法,调用start()方法启动线程; 2,实现Runnable接口,实现run()方法,用new Thread(Runnable target).start()方法启动相应线程; 3,实现Callable接口,使用FutureTask包装
阅读全文
摘要:ArrayList类在多线程环境下是线程不安全的,在多线程读写情况下会抛出并发读写异常(ConcurrentModificationException): 1 import java.util.ArrayList; 2 import java.util.List; 3 import java.uti
阅读全文
摘要:根据jdk对Lock接口的描述,Lock实现提供比使用synchronized方法和语句可以获得的更广泛的锁定操作。 它们允许更灵活的结构化,可能具有完全不同的属性,并且可以支持多个相关联的对象Condition 。 synchronized是Java的一个关键字,而Lock是一个接口。Lock锁是
阅读全文

浙公网安备 33010602011771号