摘要:
Fork/Join 框架 Fork/Join 框架:就是在必要的情况下,将一个大任务,进行拆分(fork)成 若干个小任务(拆到不可再拆时), 再将一个个的小任务运算的结果进行 join 汇总 Fork/Join 框架与线程池的区别① 采用 “工作窃取”模式(work-stealing): 当执行新 阅读全文
摘要:
线程池1. 第四种获取线程的方法:线程池,一个 ExecutorService,它使用可能的几个池线程之 一执行每个提交的任务, 通常使用 Executors 工厂方法配置。 2. 线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在 执行大量异步任务时提供增强的性能,并且还可以 阅读全文
摘要:
读-写锁 ReadWriteLock: ①ReadWriteLock 维护了一对相关的锁,一个用于只读操作, 另一个用于写入操作。 只要没有 writer,读取锁可以由 多个 reader 线程同时保持。写入锁是独占的。。②ReadWriteLock 读取操作通常不会改变共享资源,但执行 写入操作时 阅读全文
摘要:
编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C, 每个线程将自己的 ID 在屏幕上打印 10 遍,要 求输出的结果必须按顺序显示 TestABCAlternate package com.aff.juc; import java.util.concurrent.locks.C 阅读全文
摘要:
①Condition 接口描述了可能会与锁有关联的条件变量。 这些变量在用 法上与使用 Object.wait 访问的隐式监视器类似,但提供了更强大的 功能。 需要特别指出的是,单个 Lock 可能与多个 Condition 对象关 联。 为了避免兼容性问题,Condition 方法的名称与对应的 阅读全文
摘要:
显示锁 Lock ①在 Java 5.0 之前,协调共享对象的访问时可以使用的机 制只有 synchronized 和 volatile 。 Java 5.0 后增加了一些 新的机制,但并不是一种替代内置锁的方法, 而是当内置锁不适用时,作为一种可选择的高级功能。 ②ReentrantLock 实现 阅读全文
摘要:
Callable接口 ① Java 5.0 在 java.util.concurrent 提供了一个新的创建执行 线程的方式:Callable 接口② Callable 接口类似于 Runnable,两者都是为那些其实例可 能被另一个线程执行的类设计的。 但是 Runnable 不会返 回结果,并且 阅读全文
摘要:
ConcurrentHashMap: ①Java 5.0 在 java.util.concurrent 包中提供了多种并发容器类来改进同步容器 的性能。② ConcurrentHashMap 同步容器类是Java 5 增加的一个线程安全的哈希表。 对与多线程的操作,介于 HashMap 与 Hash 阅读全文
摘要:
1 .volatile 关键字:当多个线程进行操作共享数据时, 可以保证内存中的数据可见 2 .原子变量:jdk1.5后java.util.concurrent.atomic 包下提供常用的原子变量 3 .模拟CAS算法 TestVolatile package com.aff.juc; /* 1. 阅读全文
摘要:
TestTCP3 package com.aff.internet; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; i 阅读全文