在C中,有中断处理程序,因此程序员可以为中断编写特定的函数。 java中有类似的功能吗?我必须打断线程,并希望在中断时让它做一些事情。
答案 0 :(得分:0)
Java是比C更高级的编程语言。例如,您可以处理线程(不是很好的做法,但只是为了显示抽象级别)
if (Thread.interrupted()) {
// Something to do
return;
}
也许尝试在操作系统级别处理中断处理程序。
答案 1 :(得分:0)
一个线程将文本设置为字幕标签。我用'睡觉' 用于同步字幕和视频的功能。所以,如果人们想要 改变设置字幕的速度,按下按钮。那么 线程中断并执行更改睡眠时间。然后重启 使用更改的睡眠时间设置字幕。
您可以在条件(wait
/notify
)上进行定时等待,而不是简单的睡眠。
示例:
/**
* Worker thread interrupt condition object.
*/
final AtomicBoolean interruptCond = new AtomicBoolean();
/**
* Sleeps for a given period or until the interruptCond is set
*/
public boolean conditionalSleep(long ms) throws InterruptedException {
long endTime = System.currentTimeMillis() + ms, toGo;
while ((toGo = endTime - System.currentTimeMillis()) > 0) {
synchronized (interruptCond) {
interruptCond.wait(toGo);
if (interruptCond.get())
break;
}
}
return interruptCond.get();
}
/**
* The worker thread loop.
*/
public void run() {
while (true) {
if (conditionalSleep(timeToNextSubtitle)) {
adjustSpeed();
continue;
}
showNextSubtitle();
}
}
/**
* Interrupts the worker thread after changing timeToNextSubtitle.
*/
public void notifyCond() {
synchronized (interruptCond) {
interruptCond.set(true);
interruptCond.notifyAll();
}
}