# trace cross thread * Dependency the toolkit, such as using maven or gradle ```xml org.apache.skywalking apm-toolkit-trace ${skywalking.version} ``` * usage 1. ```java @TraceCrossThread public static class MyCallable implements Callable { @Override public String call() throws Exception { return null; } } ... ExecutorService executorService = Executors.newFixedThreadPool(1); executorService.submit(new MyCallable()); ``` * usage 2. ```java ExecutorService executorService = Executors.newFixedThreadPool(1); executorService.submit(CallableWrapper.of(new Callable() { @Override public String call() throws Exception { return null; } })); ``` or ```java ExecutorService executorService = Executors.newFixedThreadPool(1); executorService.execute(RunnableWrapper.of(new Runnable() { @Override public void run() { //your code } })); ``` * usage 3. ```java @TraceCrossThread public class MySupplier implements Supplier { @Override public String get() { return null; } } ... CompletableFuture.supplyAsync(new MySupplier()); ``` or ```java CompletableFuture.supplyAsync(SupplierWrapper.of(()->{ return "SupplierWrapper"; })).thenAccept(System.out::println); ``` _Sample codes only_