21xrx.com
2024-11-08 23:53:39 Friday
登录
文章检索 我的文章 写文章
我学习Java线程创建销毁 发现消耗时长
2023-06-15 13:01:33 深夜i     --     --
Java线程池 JMH库 基准测试

在学习Java线程创建和销毁过程中,我发现了一些问题。我首先尝试手动创建并销毁线程:


Thread thread = new Thread();

thread.start();

thread.join();

然而,我发现这种方法会消耗很长的时间。我使用了Java的JMH库来进行一些基准测试。这是一个简单的测试方法:


@Benchmark

@OutputTimeUnit(TimeUnit.MILLISECONDS)

public void testCreateAndDestroyThread() throws InterruptedException {

  Thread thread = new Thread();

  thread.start();

  thread.join();

}

在我的测试环境中,这个方法的平均执行时间为111毫秒。当我将线程池用于相同的任务时,时间大大减少,变为平均17毫秒:


@Benchmark

@OutputTimeUnit(TimeUnit.MILLISECONDS)

public void testThreadPool() throws InterruptedException {

  ExecutorService executor = Executors.newFixedThreadPool(1);

  executor.execute(() ->

    // task

  );

  executor.shutdown();

  executor.awaitTermination(1, TimeUnit.MINUTES);

}

因此,我得出的结论是,手动创建和销毁线程消耗的时间非常长。相比之下,使用线程池能够更快地完成相同的任务。因此,在实际开发中,我们应该尽可能地使用线程池来管理线程,而不是手动创建和销毁它们。

三个

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复