75 lines
1.9 KiB
Markdown
75 lines
1.9 KiB
Markdown
# Trace Cross Thread
|
|
These APIs provide ways to continuous tracing in the cross thread scenario with minimal code changes.
|
|
All following are sample codes only to demonstrate how to adopt cross thread cases easier.
|
|
|
|
* Case 1.
|
|
```java
|
|
@TraceCrossThread
|
|
public static class MyCallable<String> implements Callable<String> {
|
|
@Override
|
|
public String call() throws Exception {
|
|
return null;
|
|
}
|
|
}
|
|
...
|
|
ExecutorService executorService = Executors.newFixedThreadPool(1);
|
|
executorService.submit(new MyCallable());
|
|
```
|
|
* Case 2.
|
|
```java
|
|
ExecutorService executorService = Executors.newFixedThreadPool(1);
|
|
executorService.submit(CallableWrapper.of(new Callable<String>() {
|
|
@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
|
|
}
|
|
}));
|
|
```
|
|
* Case 3.
|
|
```java
|
|
@TraceCrossThread
|
|
public class MySupplier<String> implements Supplier<String> {
|
|
@Override
|
|
public String get() {
|
|
return null;
|
|
}
|
|
}
|
|
...
|
|
CompletableFuture.supplyAsync(new MySupplier<String>());
|
|
```
|
|
or
|
|
```java
|
|
CompletableFuture.supplyAsync(SupplierWrapper.of(()->{
|
|
return "SupplierWrapper";
|
|
})).thenAccept(System.out::println);
|
|
```
|
|
* Case 4.
|
|
```java
|
|
CompletableFuture.supplyAsync(SupplierWrapper.of(() -> {
|
|
return "SupplierWrapper";
|
|
})).thenAcceptAsync(ConsumerWrapper.of(c -> {
|
|
// your code visit(url)
|
|
System.out.println("ConsumerWrapper");
|
|
}));
|
|
```
|
|
or
|
|
```java
|
|
CompletableFuture.supplyAsync(SupplierWrapper.of(() -> {
|
|
return "SupplierWrapper";
|
|
})).thenApplyAsync(FunctionWrapper.of(f -> {
|
|
// your code visit(url)
|
|
return "FunctionWrapper";
|
|
}));
|
|
```
|
|
|
|
|
|
|