关于Hutool中线程工具-ThreadUtil的使用
JDK1.5开始Java提供了concurrent包可以供我们使用和解决并发以及线程的问题但是在具体实现上需要我们动手的逻辑还需要造轮子,那么ThreadUtil的出现就是为了更简单的使用线程。
自己试着用了其中两个方法,写了两个demo玩,发觉挺好用,记录一下。
方法1:ThreadUtil.excAsync();
方法1:ThreadUtil.execute();
demo:
@Test
public class AsyncTestController {
/**
* @author LiuWY
* @description 异步
* @date 2021/12/16
* @param args
* @return void
*/
public static void main(String[] args) {
try {
for(int i=0;i<5;i++){
ThreadUtil.execAsync(() -> {
int num = RandomUtil.randomInt(1000, 4000);
System.out.println(num);
});
System.out.println("第个线程:" + i);
}
System.out.println("完成");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 多线程实现线程等待的功能,所有线程的任务都指向完成后主线程才可以往下走
* @throws InterruptedException
*/
public static void test1() throws InterruptedException {
//初始化线程数量
CountDownLatch countDownLatch=ThreadUtil.newCountDownLatch(5);
for(int i=0;i<5;i++){
ThreadUtil.execute(() -> {
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
System.out.println("第"+ i +"个线程" );
//调用线程计数器-1
countDownLatch.countDown();
}
//唤醒主线程
countDownLatch.await();
System.out.println("完成");
}