When using a thread pool, TraceSegment
data in a thread cannot be reported and there are memory data that cannot be recycled (memory leaks).
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setThreadFactory(r -> new Thread(RunnableWrapper.of(r)));
When using Thread Schedule Framework
: See SkyWalking Thread Schedule Framework at SkyWalking Java agent supported list, such as Spring FrameWork @Async, which can implement tracing without any modification.
When using Custom Thread Pool
: Enhance the task thread with the following code.
ExecutorService executorService = Executors.newFixedThreadPool(1); executorService.execute(RunnableWrapper.of(new Runnable() { @Override public void run() { //your code } }));
See across thread solution APIs for more use cases.