打字猴:1.700450159e+09
1700450159
1700450160 Thread.sleep(1000);
1700450161
1700450162 System.out.println(“系统正常运行:”+i);
1700450163
1700450164 }catch(InterruptedException e){
1700450165
1700450166 e.printStackTrace();
1700450167
1700450168 }
1700450169
1700450170 }
1700450171
1700450172 //抛出异常
1700450173
1700450174 throw new RuntimeException();
1700450175
1700450176 }
1700450177
1700450178 //异常处理器
1700450179
1700450180 private static class TcpServerExceptionHandler implements
1700450181
1700450182 Thread.UncaughtExceptionHandler{
1700450183
1700450184 @Override
1700450185
1700450186 public void uncaughtException(Thread t, Throwable e){
1700450187
1700450188 //记录线程异常信息
1700450189
1700450190 System.out.println(“线程”+t.getName()+“出现异常,自行重启,请分析原因。”);
1700450191
1700450192 e.printStackTrace();
1700450193
1700450194 //重启线程,保证业务不中断
1700450195
1700450196 new TcpServer();
1700450197
1700450198 }
1700450199
1700450200 }
1700450201
1700450202 }
1700450203
1700450204 这段代码的逻辑比较简单,在TcpServer类创建时即启动一个线程,提供TCP服务,例如接收和发送文件,具体逻辑在run方法中实现。同时,设置了该线程出现运行期异常(也就是Uncaught Exception)时,由TcpServerExceptionHandler异常处理器来处理。那TcpServerExceptionHandler异常处理器做什么事呢?两件事:
1700450205
1700450206 记录异常信息,以便查找问题。
1700450207
1700450208 重新启动一个新线程,提供不间断的服务。
[ 上一页 ]  [ :1.700450159e+09 ]  [ 下一页 ]