摘要: 简介 在日常的开发中,可能会遇到这样的场景:开启多个子线程执行一些耗时任务,然后在主线程汇总,在子线程执行的过程中,主线程保持阻塞状态直到子线程完成任务。 使用CountDownLatch类或者Thread类的join()方法都能实现这一点,下面通过例子来介绍这两种实现方法。 CountDownLa 阅读全文
posted @ 2021-03-30 15:06 布禾 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 简介 Thumbnailator是一个用于Java的缩略图生成库。 通过Thumbnailator提供的流畅接口(fluent interface)的方式可以完成复杂的缩略图处理任务,无需访问Image I/O API并通过Graphics2D对象手动操作BufferedImages。 Maven依 阅读全文
posted @ 2021-03-30 10:29 布禾 阅读(668) 评论(0) 推荐(1) 编辑
摘要: 简介 LockSupport是一个工具类,提供了基本的线程阻塞和唤醒功能,它是创建锁和其他同步组件的基础工具,内部是使用sun.misc.Unsafe类实现的。 LockSupport和使用它的线程都会关联一个许可,park方法表示消耗一个许可,调用park方法时,如果许可可用则park方法返回,如 阅读全文
posted @ 2021-03-29 16:52 布禾 阅读(2003) 评论(0) 推荐(4) 编辑
摘要: 简介 volatile关键字主要是用来解决共享变量内存可见性问题和CPU指令乱序执行问题。 下面通过一个实例来说明下这两个问题导致的原因和volatile如何解决这两个问题。 volatile的使用 public class TaskRunner { private static int numbe 阅读全文
posted @ 2021-03-12 09:38 布禾 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 简介 在多线程编程中,有时候一个线程的执行可能要依赖于另外一个线程的执行结果才能执行,JDK提供了join方法来实现这种功能。 当我们在线程上调用join方法时,调用线程进入等待状态。它保持等待状态,直到引用的线程执行完成。 join及其重载方法: join(),等待该线程执行结束。 join(lo 阅读全文
posted @ 2021-03-12 08:38 布禾 阅读(495) 评论(0) 推荐(0) 编辑
摘要: 简介 一般情况下,线程执行完成后就会结束,但有的时候我们可能需要在它正常执行完成前就停止它,可以考虑使用以下三种方法: 使用Thread中的stop方法,这个方法已经被标为已废弃,不推荐使用,原因是stop方法会立即终止线程并释放持有的锁,在多线程的情况下可能会导致数据不一致的问题。 自定义一个标志 阅读全文
posted @ 2021-03-05 09:42 布禾 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 简介 线程是基本的调度单位,它被包含在进程之中,是进程中的实际运作单位,它本身是不会独立存在。一个进程至少有一个线程,进程中的多个线程共享进程的资源。 Java中创建线程的方式有多种如继承Thread类、实现Runnable接口、实现Callable接口以及使用线程池的方式,线程池将在后面文章中单独 阅读全文
posted @ 2021-03-05 08:39 布禾 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 简介 synchronized在JDK5.0的早期版本中是重量级锁,效率很低,但从JDK6.0开始,JDK在关键字synchronized上做了大量的优化,如偏向锁、轻量级锁等,使它的效率有了很大的提升。 synchronized的作用是实现线程间的同步,当多个线程都需要访问共享代码区域时,对共享代 阅读全文
posted @ 2021-03-03 22:00 布禾 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 简介 Java注解是JDK1.5引入的一种注释机制,它不会改变编译器的编译方式,Java编译器对包含注解和不包含注解的代码会生成相同的Java虚拟机指令。在实际应用中,注解只是一种标识,具体的操作需要借助其他工具来解析和处理。 注解语法 注解是使用@interface来定义的,所有注解都隐式的扩展自 阅读全文
posted @ 2021-03-01 19:44 布禾 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 在Java中可以使用ZipOutputStream和ZipInputStream来实现zip的压缩和解压缩操作,另外使用FileSystem也可以用来实现zip的解压缩,下面将介绍这几种方式,直接上代码。 zip压缩 待压缩文件目录结构: 每个zip文件项都要对应一个ZipEntry,然后通过Zip 阅读全文
posted @ 2021-02-24 19:07 布禾 阅读(1463) 评论(0) 推荐(0) 编辑