随笔分类 -  Java多线程

摘要:JMM 什么是JMM JMM: Java内存模型 不存在的东西 概念 约定 关于JMM的一些同步的约定 1.线程解锁前,必须把共享变量立刻刷回主存 2.线程加锁前,必须读取主存中的最新值到工作内存中 3.加锁和解锁是同一把锁 线程 工作内存,主内存 8种操作 内存交互操作有8种,虚拟机实现必须保证每 阅读全文
posted @ 2021-07-19 15:45 野兽Gentleman 阅读(148) 评论(0) 推荐(0)
摘要:ForkJoin 分支合并 ForkJoin在JDK1.7出现的 并行执行任务 提高效率 大数据量 把大任务分成小任务 fork join 特点 工作窃取 public class ForkJoinDemo extends RecursiveTask<Long> { private long sta 阅读全文
posted @ 2021-07-17 11:53 野兽Gentleman 阅读(71) 评论(0) 推荐(0)
摘要:ReadWriteLock /* * 独占锁(写锁)一次只能被一个线程占有 * 共享锁(读锁) 多个线程可以同时占有 * ReadWriteLock * 读-读 可以共存 * 读-写 不能共存 * 写-写 不能共存 * * */ public class ReadWriteLockDemo { pu 阅读全文
posted @ 2021-07-15 19:27 野兽Gentleman 阅读(63) 评论(0) 推荐(0)
摘要:减法计数器 CountDownLatch // 减法 计数器 // 每次有线程调用 countDown() 数量-1 假设计数器变为0 countDownLatch.await()就会被唤醒 继续执行 public class CountDownLatchDemo { public static v 阅读全文
posted @ 2021-06-28 21:14 野兽Gentleman 阅读(59) 评论(0) 推荐(0)
摘要:不安全的集合类 CopyOnWriteArrayList /* * 并发下 ArrayList 是不安全的 * java.util.ConcurrentModificationException 并发修改异常 * 解决方案 * List<String> list = new Vector<>(); 阅读全文
posted @ 2021-06-28 18:05 野兽Gentleman 阅读(37) 评论(0) 推荐(0)
摘要:public class A { public static void main(String[] args) { Data data = new Data(); new Thread(() -> { for (int i = 0; i < 10; i++) { try { data.increme 阅读全文
posted @ 2021-06-28 14:53 野兽Gentleman 阅读(76) 评论(0) 推荐(0)
摘要:这就是JUC 传统的方法在多线程的情况下就会有并发的问题 public class SaleTicketDemo01 { public static void main(String[] args) { // 并发 多个线程操作同一个资源类 把资源丢入线程 Ticket ticket = new T 阅读全文
posted @ 2021-06-25 20:14 野兽Gentleman 阅读(84) 评论(0) 推荐(0)
摘要:1 /* 2 测试停止 3 1.建议线程正常停止--利用次数 不建议死循环 4 2.建议使用标志位--设置一个标志位 5 3,不建议使用stop或者destroy等过时或者JDK不推荐的方法 6 */ 7 public class TestThreadStop implements Runnable 阅读全文
posted @ 2020-09-16 15:01 野兽Gentleman 阅读(102) 评论(0) 推荐(0)
摘要:恢复内容开始 程序运行起来就产生了进程 一个进程有多个线程 java默认有main线程(用户线程) gc线程(守护线程) 三种创建方式 继承thread类 -- 实现了Runnable接口 实现Runnable接口 实现callable接口 1 //创建线程的方式1:继承Thread类,重写run( 阅读全文
posted @ 2020-09-11 18:50 野兽Gentleman 阅读(263) 评论(0) 推荐(0)