All Downloads are FREE. Search and download functionalities are using the official Maven repository.

club.zhcs.utils.threads.MutilThreadRunner Maven / Gradle / Ivy

package club.zhcs.utils.threads;

import java.util.concurrent.CountDownLatch;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

public interface MutilThreadRunner {

	@Data
	@Builder
	@NoArgsConstructor
	@AllArgsConstructor
	@EqualsAndHashCode(callSuper = true)
	public static class RunThread extends Thread {

		int index;
		int threads;
		JobRunner jobRunner;
		CountDownLatch countDownLatch;

		@Override
		public void run() {
			jobRunner.run(index, threads);
			if (countDownLatch != null) {
				countDownLatch.countDown();
			}
		}
	}

	public default void run(JobRunner jobRunner, int threads) throws InterruptedException {
		for (int i = 0; i < threads; i++) {
			RunThread.builder().index(i).threads(threads).jobRunner(jobRunner).build().start();
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy