Java是一種十分流行的編程語言,可以用于開發(fā)各種類型的應(yīng)用程序。在許多應(yīng)用程序中,暫停和計(jì)時器是十分常見的功能。在Java中,我們可以使用線程實(shí)現(xiàn)暫停和計(jì)時器的功能,下面是一個簡單的示例。
/** * 暫停程序的線程 */ class PauseThread extends Thread { private volatile boolean isPaused = false; public void pauseThread() { isPaused = true; } public void resumeThread() { isPaused = false; } @Override public void run() { while (true) { if (isPaused) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } else { System.out.println("正在執(zhí)行任務(wù)..."); } } } } /** * 計(jì)時器的線程 */ class TimerThread extends Thread { private volatile boolean isFinished = false; private int count; public int getCount() { return count; } public boolean isFinished() { return isFinished; } @Override public void run() { while (!isFinished) { try { Thread.sleep(1000); count++; } catch (InterruptedException e) { e.printStackTrace(); } } } } public class Main { public static void main(String[] args) { PauseThread pauseThread = new PauseThread(); pauseThread.start(); TimerThread timerThread = new TimerThread(); timerThread.start(); try { // 模擬執(zhí)行任務(wù)5秒 Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } pauseThread.pauseThread(); System.out.println("暫停程序運(yùn)行..."); try { // 模擬暫停1秒 Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } pauseThread.resumeThread(); System.out.println("恢復(fù)程序運(yùn)行..."); while (!timerThread.isFinished()) { System.out.println("程序已經(jīng)運(yùn)行了 " + timerThread.getCount() + " 秒..."); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("程序運(yùn)行結(jié)束..."); } }
上述代碼中,我們定義了兩個線程:PauseThread和TimerThread。PauseThread用于實(shí)現(xiàn)暫停程序的功能,TimerThread用于實(shí)現(xiàn)計(jì)時器的功能。在主程序中,我們先啟動兩個線程,然后模擬執(zhí)行任務(wù)5秒后暫停程序1秒,然后恢復(fù)程序運(yùn)行。最后我們采用while循環(huán)來判斷計(jì)時器線程是否已經(jīng)完成,并輸出程序運(yùn)行的總時間。