- 讲师:刘萍萍 / 谢楠
- 课时:160h
- 价格 4580 元
特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关
配套通关班送国网在线题库一套
百度广告
清单 2. 把错误通知给客户机线程的示例
public class Server2 extends Thread {
int counter;
public Server2(Client2 _client) {
this.counter = 0;
public void run() {
while (counter < 10) {
counter++;
throw new RuntimeException("counter >= 10");
catch (Exception e) {
throw new RuntimeException(e.toString());
}
public static void main(String args) {
Server2 s = new Server2(c);
s.start();
}
class Client2 extends Thread {
boolean interruptFlag;
public Client2() {
this.interruptFlag = false;
public void run() {
if (! (queue.size() == 0)) {
}
// Processes whatever elements remain on the queue before exiting.
processNextElement();
System.out.flush();
private void processNextElement() {
queue.removeElementAt(0);
}
处理被抛出的异常的其它选项可能是调用 System.exit。这个选项在程序的主线程发生崩溃而其它线程不管理任何临界资源的时候是有意义的。然而在其它情况下,这可能是危险的。例如,考虑这样一个示例,其它线程中的一个正在管理一个打开的文件。如果这是实际的情况,那么只是退出程序会导致资源泄漏。
即使在上面的简单示例中,在 server 线程中调用 System.exit 也会导致 client 未处理其队列上的任何剩余元素就退出。
事实上,就是这样的问题促使 Sun 不建议线程的 stop 方法。由于强行停止一个线程会使资源陷入非一致状态,所以 stop 方法破坏了语言的安全性模型。
想了解 Sun 的更多不建议理由,请参阅参考资料。
总结
模式:孤线程
责编:罗莉
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
点击加载更多评论>>