java中是否有中断处理程序?

时间:2017-09-15 11:39:34

标签: java c handler interrupt

在C中,有中断处理程序,因此程序员可以为中断编写特定的函数。 java中有类似的功能吗?我必须打断线程,并希望在中断时让它做一些事情。

2 个答案:

答案 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();
        }
    }