Class SyncFinisher

java.lang.Object
org.miaixz.bus.core.lang.thread.SyncFinisher
All Implemented Interfaces:
Closeable, AutoCloseable

public class SyncFinisher extends Object implements Closeable
线程同步结束器 在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
 ps:
 //模拟1000个线程并发
 SyncFinisher sf = new SyncFinisher(1000);
 sf.addWorker(() -> {
      // 需要并发测试的业务代码
 });
 sf.start()
 
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • SyncFinisher

      public SyncFinisher(int threadSize)
      构造
      Parameters:
      threadSize - 线程数
  • Method Details

    • setBeginAtSameTime

      public SyncFinisher setBeginAtSameTime(boolean isBeginAtSameTime)
      设置是否所有worker线程同时开始
      Parameters:
      isBeginAtSameTime - 是否所有worker线程同时开始
      Returns:
      this
    • setExceptionHandler

      public SyncFinisher setExceptionHandler(Thread.UncaughtExceptionHandler exceptionHandler)
      设置异常处理
      Parameters:
      exceptionHandler - 异常处理器
      Returns:
      this
    • addRepeatWorker

      public SyncFinisher addRepeatWorker(Runnable runnable)
      增加定义的线程数同等数量的worker
      Parameters:
      runnable - 工作线程
      Returns:
      this
    • addWorker

      public SyncFinisher addWorker(Runnable runnable)
      增加工作线程
      Parameters:
      runnable - 工作线程
      Returns:
      this
    • addWorker

      public SyncFinisher addWorker(SyncFinisher.Worker worker)
      增加工作线程
      Parameters:
      worker - 工作线程
      Returns:
      this
    • start

      public void start()
      开始工作 执行此方法后如果不再重复使用此对象,需调用stop()关闭回收资源。
    • start

      public void start(boolean sync)
      开始工作 执行此方法后如果不再重复使用此对象,需调用stop()关闭回收资源。
      Parameters:
      sync - 是否阻塞等待
    • stop

      public void stop()
      结束线程池。此方法执行两种情况:
      1. 执行start(true)后,调用此方法结束线程池回收资源
      2. 执行start(false)后,用户自行判断结束点执行此方法
    • stop

      public void stop(boolean isStopNow)
      结束线程池。此方法执行两种情况:
      1. 执行start(true)后,调用此方法结束线程池回收资源
      2. 执行start(false)后,用户自行判断结束点执行此方法
      Parameters:
      isStopNow - 是否立即结束所有线程(包括正在执行的)
    • clearWorker

      public void clearWorker()
      清空工作线程对象
    • count

      public long count()
      剩余任务数
      Returns:
      剩余任务数
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable