TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
当一个线程运行时,另一个线程可以调用Thread对象的interrupt()方法来中断它:
public void interrupt()
这个方法只是在目标线程中将中断标志设为true(它是Thread的内部标志),没有其他影响,表示它已经被中断,并立即返回。如果一个处于休眠的线程被中断,将导致它抛出InterruptedException。
public class SleepInterrupt extends Object implements Runnable {
public void run() {//计算1+2+3+...+200
int s=0;
int i=0;
try {
System.out.println("in run() - about to sleep for 20 seconds");
for(i=1;i<200;i++){
s=s+i;
Thread.sleep(20000);//进入休眠
System.out.println("in run() - woke up");
}
} catch ( InterruptedException x ) {
System.out.println("in run() - interrupted while sleeping");
System.out.println("i="+i+"; s="+s);//线程被中断后,任务执行情况。
// return;
}
System.out.println("i="+i+"; s="+s);//如果被中断,任务将不能完成。
System.out.println("in run() - doing stuff after nap");
System.out.println("in run() - leaving normally");
}
public static void main(String[] args) {
SleepInterrupt si = new SleepInterrupt();
Thread t = new Thread(si);//构造线程
t.start();
// 确保新线程有机会运行一段时间
try { Thread.sleep(2000); }
catch ( InterruptedException x ) { }
System.out.println("in main() - interrupting other thread");
t.interrupt();//在主线程中中断另一个正在休眠的线程。
System.out.println("in main() - leaving");
}
}
运行结果:
C:java>javac SleepInterrupt.java
C:java>java SleepInterrupt
in run() - about to sleep for 20 seconds
in main() - interrupting other thread
in run() - interrupted while sleeping
i=1; s=1
i=1; s=1
in run() - doing stuff after nap
in run() - leaving normally
in main() - leaving
function TempSave(ElementID)
{
CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value);
CommentsPersistDiv.save("CommentXMLStore");
}
function Restore(ElementID)
{
CommentsPersistDiv.load("CommentXMLStore");
document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent");
} |
|