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
重新启动一个新线程,提供不间断的服务。
1700450209
1700450210
有了这两点,TcpServer就可以稳定地运行了,即使出现异常也能自动重启。客户端代码比较简单,只需要new TcpServer()即可,运行结果如下:
1700450211
1700450212
系统正常运行:0
1700450213
1700450214
系统正常运行:1
1700450215
1700450216
系统正常运行:2
1700450217
1700450218
线程Thread-0出现异常,自行重启,请分析原因。
1700450219
1700450220
java.lang.RuntimeException
1700450221
1700450222
at TcpServer.run(Client.java:30)
1700450223
1700450224
at java.lang.Thread.run(Thread.java:619)
1700450225
1700450226
系统正常运行:0
1700450227
1700450228
系统正常运行:1
1700450229
1700450230
系统正常运行:2
1700450231
1700450232
线程Thread-1出现异常,自行重启,请分析原因。
1700450233
1700450234
java.lang.RuntimeException
1700450235
1700450236
at TcpServer.run(Client.java:30)
1700450237
1700450238
at java.lang.Thread.run(Thread.java:619)
1700450239
1700450240
从运行结果上也可以看出,当Thread-0出现异常时,系统自动启动了Thread-1线程,继续提供服务,大大提高了系统的可靠性。
1700450241
1700450242
这段程序只是一个示例程序,若要在实际环境中应用,则需要注意以下三个方面:
[
上一页 ]
[ :1.700450193e+09 ]
[
下一页 ]