随笔分类 - Java-多线程/高并发
摘要:synchoronized是JVM的内置锁,而lock是Java代码实现的。lock是sync对的扩展,完全可以替代后者。lock可以重入,允许同一个线程连续多次获得同一把锁。其次,lock独有的功能有: 1、可以响应中断,sync要么获得锁执行,要么保持等待。而重入锁可以响应中断,使得线程在迟迟得
阅读全文
摘要:引言:在给一个系统定位的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照(threaddump/javacore文件)、堆转储快照(headdump/hprof文件)等。经常使用适当的虚拟机监控和分析工具可以加快我们分析数
阅读全文
摘要:* 场景 * 有N张火车票,每张票都有一个编号 * 同时有10个窗口对外售票 * 请写一个模拟程序 * 分析下面的程序可能会产生哪些问题? * 重复销售?超量销售? Solution1:使用线程不安全的集合而且不上锁 报错: ①程序逻辑的线程不安全:有可能多个线程涌入while循环是造成并发问题的根
阅读全文
摘要:import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Solution { private int start = 1; /** * 对flag的写入虽然加锁保证了线程安全,但由于读取时不是volatile所以...
阅读全文
摘要:创建多线程 【Thread class】1.继承Thread类,重写run() 【Runnable接口】2.实现Runnable接口,重写run() 【*Callable接口】3.实现Callable接口——高级并发编程JUC 根据面向对象思想,少用继承,多用实现,因为Java有单继承的局限性:继承
阅读全文