@AllArgsConstructor
@NoArgsConstructor
@Data
public class AsyncResult<T> implements Future<T>, Serializable {
@ApiModelProperty(value="返回数据",name="data")
private T data;
@Override
public boolean cancel(boolean mayInterruptIfRunning) {
return false;
}
@Override
public boolean isCancelled() {
return false;
}
@Override
public boolean isDone() {
return false;
}
@Override
public T get() {
return this.data;
}
@Override
public T get(long timeout, TimeUnit unit) {
return this.data;
}
}
@Service
@Transactional(rollbackFor = Exception.class)
public class AsyncTestClass {
@Async
public Future<Integer> asyncTest(int i){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(i +"i.."+Thread.currentThread().getName());
return new AsyncResult<>(i);
}
@Async
public int asyncTestInt(int i){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(i +"i.."+Thread.currentThread().getName());
return i;
}
}
@SpringBootTest
class GwdataApplicationTests {
@Test
void contextLoads() {
}
@Autowired
private AsyncTestClass asyncTestClass;
@Test yes
public void test() throws ExecutionException, InterruptedException {
// List<Future> futures = new ArrayList<>();
//
// for(int i=0; i<5; i++){
//
// Future<Integer> future = asyncTestClass.asyncTest(i);
Future<Integer> future = asyncTest(i);
futures.add(future);
// }
// for(Future future : futures){
// System.out.println(future.get());
// }
// asyncTestInt no
for(int i=0; i<5; i++){
int ii = asyncTestClass.asyncTestInt(i);
System.out.println("ii" + ii);
}
}
//本类执行异步方法 no
@Async
public Future<Integer> asyncTest(int i){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(i + "i.." +Thread.currentThread().getName());
return new AsyncResult<>(i);
}
}
异步方法返回结果
最新推荐文章于 2024-02-20 09:06:08 发布