关于Thread.stop()的问题!

白告 2004-07-13 08:52:29
For example, suppose your applet contains the following start, stop and run methods:

private Thread blinker;

public void start() {
blinker = new Thread(this);
blinker.start();
}

public void stop() {
blinker.stop(); // UNSAFE!
}

public void run() {
Thread thisThread = Thread.currentThread();
while (true) {
try {
thisThread.sleep(interval);
} catch (InterruptedException e){
}
repaint();
}
}

You can avoid the use of Thread.stop by replacing the applet's stop and run me
thods with:
private volatile Thread blinker;

public void stop() {
blinker = null;
}

public void run() {
Thread thisThread = Thread.currentThread();
while (blinker == thisThread) {
try {
thisThread.sleep(interval);
} catch (InterruptedException e){
}
repaint();
}
}

java文档中怎么可以overrride??!!
但我仿造他的做法总是报错:demoThreadgroup.java:17: stop() in demoThreadgroup cannot override stop() in java.lang.Thread; overridden method is final
既然stop()定义的是final为什么文档这么举例子?
...全文
462 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ecaol 2004-07-13
  • 打赏
  • 举报
回复
UP
maowu 2004-07-13
  • 打赏
  • 举报
回复
那就不要继承Thread,用interface Runnable代替。
白告 2004-07-13
  • 打赏
  • 举报
回复
还有个小问题,上面的例子既然继承了Applet, 如何再继承Thread了?
rosen 2004-07-13
  • 打赏
  • 举报
回复
Thread.stop() 最好不要这样用。

设置一个标志 Thread.shouldRun=flase;
白告 2004-07-13
  • 打赏
  • 举报
回复
I see!THX
binny 2004-07-13
  • 打赏
  • 举报
回复
suppose your applet contains the following start ...
^^^^^^

人家的例子是applet,没有继承Thread,所以你仔细看人家的说法,是replacing而不是override
白告 2004-07-13
  • 打赏
  • 举报
回复
那它继承的是什么??我搞不懂了,大虾能不能说清楚点:)我该怎么做?
maowu 2004-07-13
  • 打赏
  • 举报
回复
例子中的stop()不是override Thread.stop();因为例子所在的类根本就不是继承Thread的。
但是你的类是继承Thread的。
nwpulipeng 2004-07-13
  • 打赏
  • 举报
回复
up

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧