public static void main(String[] args) {
try {
AtomicLong count = new AtomicLong(0);
Thread th = Thread.currentThread();
BusinessRuntimeException err = BusinessRuntimeException.with("0000", "请求成功!");
// Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandle());
for (int i = 0; i < 100; i++) {
executor.execute(new Test(i, count, th, err));
}
System.out.println( "park() >>>>>>>>>>> th = " + th.getName() + " >>>>>> count" + count.get());
LockSupport.park(th);
// th.join();
System.out.println( "end >>>>>>>>>>> th = " + th.getName()+ " >>>>>> count" + count.get());
((ExecutorService) executor).shutdown();
if ( !"0000".equals(err.getExceptionCode()) ) {
throw (BusinessRuntimeException) err.getCause();
}
} catch (Exception e) {
System.out.println("-----------------------");
e.printStackTrace();
}
}
static class Test extends Thread {
private int i;
private AtomicLong count;
private Thread th ;
private BusinessRuntimeException error;
public Test(int i, AtomicLong count, Thread th, BusinessRuntimeException error) {
this.i = i;
this.count = count;
this.th = th;
if ( "0000".equals(error.getExceptionCode()) ) {
this.error = error;
}
}
@Override
public void run() {
Thread.currentThread().setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("caught " + e);
if ( e instanceof BusinessRuntimeException ) {
error.initCause(e);
// error.getCause().addSuppressed(e);
error.setExceptionCode(((BusinessRuntimeException) e).getExceptionCode());
System.out.println("i => "+ i + e +" >>>>>>>>............error=" + error.getExceptionCode() + error.getMessage());
}
}
});
long get = count.incrementAndGet();
System.out.println("i => "+ i + " >>>>>> count" + get + "error=" + error);
if ( get == 50 ) {
System.out.println("count ====================> "+ get);
throw BusinessRuntimeException.with("-0003", "数据异常");
}
if ( get == 100 ) {
System.out.println( "unpark() >>>>>>>>>>> th = " + th.getName());
LockSupport.unpark(th);
}
}
}
public class BusinessRuntimeException extends RuntimeException {
/**
* 异常码
*/
private String exceptionCode;
public BusinessRuntimeException(String message) {
super(message);
}
public BusinessRuntimeException(String exceptionCode, String message) {
super(message);
this.exceptionCode = exceptionCode;
}
public String getExceptionCode() {
return exceptionCode;
}
public void setExceptionCode(String exceptionCode) {
this.exceptionCode = exceptionCode;
}
}
控制台输出:
park() >>>>>>>>>>> th = main >>>>>> count0
i => 0 >>>>>> count1error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 40 >>>>>> count2error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 41 >>>>>> count3error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 42 >>>>>> count4error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 43 >>>>>> count5error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 44 >>>>>> count6error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 45 >>>>>> count7error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 46 >>>>>> count8error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 47 >>>>>> count9error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 48 >>>>>> count10error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 49 >>>>>> count11error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 50 >>>>>> count12error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 51 >>>>>> count13error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 52 >>>>>> count14error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 53 >>>>>> count15error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 54 >>>>>> count16error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 55 >>>>>> count17error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 56 >>>>>> count18error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 57 >>>>>> count19error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 58 >>>>>> count20error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 59 >>>>>> count21error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 60 >>>>>> count22error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 61 >>>>>> count23error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 62 >>>>>> count24error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 63 >>>>>> count25error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 64 >>>>>> count26error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 65 >>>>>> count27error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 66 >>>>>> count28error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 67 >>>>>> count29error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 68 >>>>>> count30error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 69 >>>>>> count31error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 70 >>>>>> count32error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 71 >>>>>> count33error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 72 >>>>>> count34error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 73 >>>>>> count35error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 74 >>>>>> count37error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 75 >>>>>> count38error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 1 >>>>>> count36error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 76 >>>>>> count39error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 77 >>>>>> count40error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 78 >>>>>> count41error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 79 >>>>>> count42error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 80 >>>>>> count44error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 81 >>>>>> count45error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 82 >>>>>> count46error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 83 >>>>>> count47error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 84 >>>>>> count48error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 85 >>>>>> count49error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 86 >>>>>> count50error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
count ====================> 50
caught com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 数据异常
i => 86com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 数据异常 >>>>>>>>..............................error=-0003请求成功!
i => 87 >>>>>> count51error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 88 >>>>>> count52error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 89 >>>>>> count53error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 90 >>>>>> count54error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 91 >>>>>> count55error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 92 >>>>>> count56error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 93 >>>>>> count57error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 94 >>>>>> count58error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 95 >>>>>> count59error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 96 >>>>>> count60error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 97 >>>>>> count61error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 98 >>>>>> count62error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 99 >>>>>> count63error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 2 >>>>>> count43error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 3 >>>>>> count64error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 4 >>>>>> count65error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 5 >>>>>> count66error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 6 >>>>>> count67error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 7 >>>>>> count68error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 8 >>>>>> count69error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 9 >>>>>> count70error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 10 >>>>>> count71error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 11 >>>>>> count72error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 12 >>>>>> count73error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 13 >>>>>> count74error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 14 >>>>>> count75error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 15 >>>>>> count76error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 16 >>>>>> count77error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 17 >>>>>> count78error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 18 >>>>>> count79error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 19 >>>>>> count80error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 20 >>>>>> count81error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 21 >>>>>> count82error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 22 >>>>>> count83error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 23 >>>>>> count84error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 24 >>>>>> count85error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 25 >>>>>> count86error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 26 >>>>>> count87error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 27 >>>>>> count88error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 28 >>>>>> count89error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 29 >>>>>> count90error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 30 >>>>>> count91error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 31 >>>>>> count92error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 32 >>>>>> count93error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 33 >>>>>> count94error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 34 >>>>>> count95error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 35 >>>>>> count96error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 36 >>>>>> count97error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 37 >>>>>> count98error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 38 >>>>>> count99error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
i => 39 >>>>>> count100error=com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 请求成功!
unpark() >>>>>>>>>>> th = main
end >>>>>>>>>>> th = main >>>>>> count100
-----------------------
com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException: 数据异常
at com.tcl.multimedia.nretail.tsale.server.exception.BusinessRuntimeException.with(BusinessRuntimeException.java:47)
at com.tcl.multimedia.nretail.tsale.server.service.impl.certificate.CertificateServiceImpl$Test.run(CertificateServiceImpl.java:1072)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
进程已结束,退出代码0