您好,欢迎访问一九零五行业门户网

java如何更改线程名称

更改线程名称
为了简化日志读取和线程转储,可以自定义线程的名称。这可以通过创建executorservice时用一个threadfactory来完成。在流行的实用程序库中有许多threadfactory接口的实现:
com.google.common.util.concurrent.threadfactorybuilde+r in guava. org.springframework.scheduling.concurrent.customizablethreadfactory in spring. org.apache.commons.lang3.concurrent.basicthreadfactory in apache commons lang 3.
threadfactory threadfactory = new basicthreadfactory.builder() .namingpattern("computation-thread-%d") .build();executorservice executorservice = executors.newfixedthreadpool(numberofthreads, threadfactory);
尽管forkjoinpool不使用threadfactory接口,但也支持对线程的重命名:
forkjoinpool.forkjoinworkerthreadfactory forkjointhreadfactory = pool -> { forkjoinworkerthread thread = forkjoinpool.defaultforkjoinworkerthreadfactory.newthread(pool); thread.setname("computation-thread-" + thread.getpoolindex()); return thread;};forkjoinpool forkjoinpool = new forkjoinpool(numberofthreads, forkjointhreadfactory, null, false);
将线程转储与默认命名进行比较:
"pool-1-thread-3" #14 prio=5 os_prio=31 tid=0x00007fc06b19f000 nid=0x5703 runnable [0x0000700001ff9000] java.lang.thread.state: runnableat com.github.sorokinigor.article.tipsaboutconcurrency.setthreadsname.taskhandler.compute(taskhandler.java:16)..."pool-2-thread-3" #15 prio=5 os_prio=31 tid=0x00007fc06aa10800 nid=0x5903 runnable [0x00007000020fc000] java.lang.thread.state: runnableat com.github.sorokinigor.article.tipsaboutconcurrency.setthreadsname.healthcheckcallback.recordfailure(healthchecker.java:21)at com.github.sorokinigor.article.tipsaboutconcurrency.setthreadsname.healthchecker.check(healthchecker.java:9)..."pool-1-thread-2" #12 prio=5 os_prio=31 tid=0x00007fc06aa10000 nid=0x5303 runnable [0x0000700001df3000] java.lang.thread.state: runnableat com.github.sorokinigor.article.tipsaboutconcurrency.setthreadsname.taskhandler.compute(taskhandler.java:16) ...
与自定义命名进行比较:
"task-handler-thread-1" #14 prio=5 os_prio=31 tid=0x00007fb49c9df000 nid=0x5703 runnable [0x000070000334a000] java.lang.thread.state: runnableat com.github.sorokinigor.article.tipsaboutconcurrency.setthreadsname.taskhandler.compute(taskhandler.java:16)..."authentication-service-ping-thread-0" #15 prio=5 os_prio=31 tid=0x00007fb49c9de000 nid=0x5903 runnable [0x0000700003247000] java.lang.thread.state: runnableat com.github.sorokinigor.article.tipsaboutconcurrency.setthreadsname.healthcheckcallback.recordfailure(healthchecker.java:21)at com.github.sorokinigor.article.tipsaboutconcurrency.setthreadsname.healthchecker.check(healthchecker.java:9)..."task-handler-thread-0" #12 prio=5 os_prio=31 tid=0x00007fb49b9b5000 nid=0x5303 runnable [0x0000700003144000] java.lang.thread.state: runnableat com.github.sorokinigor.article.tipsaboutconcurrency.setthreadsname.taskhandler.compute(taskhandler.java:16) ...
想象一下,可能会不止3个线程。
以上就是java如何更改线程名称的详细内容。
其它类似信息

推荐信息