文章分类 - Java / 多线程
摘要:CompletableFuture 是 Java 8 引入的一个类,位于 java.util.concurrent 包中,用于编写异步代码,提供了一个可编程的、可组合的异步编程框架。以下是 CompletableFuture 的使用环境和具体作用 异步编程:比如你有10个任务,每个任务都需要执行挺长
阅读全文
摘要:多线程 线程池ThreadPoolExecutor 线程池是java提供的线程管理容器,它允许开发者定义多个线程,并开启一些额外线程,提供一个自定义的任务队列和队列满时对新任务的处理策略。 使用 ThreadPoolExecutor poolExecutor = new ThreadPoolExec
阅读全文
摘要:ThreadLocal 源码解析 ThreadLocal 是一个支持变量由线程独有且相互隔离互不影响的类。 举个例子 A,B,C三个线程同时操作一个类Demo的实例对象d,类Demo中有一个ThreadLocal的变量d且初始值为0,A,B,C分别对这个变量d进行循环加1,循环10次,最后输出,那么
阅读全文
摘要:多线程 wait和notify、notifyAll wait 线程等待,释放本身占有的锁,然后进入锁的等待队列中等待唤醒 notify 唤醒一个处于等待队列中对希望获取自己占有的锁的线程 notifyAll 唤醒所有处于等待队列中对希望获取自己占有的锁的线程 wait 当一个线程调用wait()方法
阅读全文
摘要:多线程关键字volatile 从硬件层面理解 volatile 的原理 volatile是解决多线程使用同一数据时无法保证一致性的问题。比如下面的代码 public class ClassSync implements Runnable{ @Override public void run() {
阅读全文
摘要:多线程 synchronized 将并行改串行,多个线程同时开始,执行同一段加锁的代码,那么这段代码在任何时间仅能由一个线程执行,且这个线程在执行完这段代码中的内容后才会释放锁,执行期间其他线程无法进来捣乱执行(因为未获取到锁),在这个线程未释放锁前,其他线程只能阻塞。 举个形象的例子便于理解 几个
阅读全文
摘要:多线程 interrupt interrupt是从外部手动控制线程执行的方法。比如:下载资源线程A 调用了 下载图像线程B和下载音频线程C,线程a实时监控着磁盘的容量,如果资源量占磁盘99%,就必须停止线程b和线程c的下载动作了;类似这种情况,可采用线程a调用线程b和线程c的interrupt的方法
阅读全文
摘要:多线程 join 举个例子:A线程中调用B线程,A线程中的业务需要等待B线程执行完成后才可继续执行。那么A线程的代码中调用B线程的join方法实现这一目的(总结:等待被调用的线程执行完成后,自己再接着执行) 不带时间参数的join public class Demo implements Runna
阅读全文