Java中的線程是一個(gè)很強(qiáng)大的工具,可以讓程序同時(shí)執(zhí)行多個(gè)任務(wù)。在進(jìn)行多線程編程的過(guò)程中,需要掌握如何關(guān)閉和開啟線程。
關(guān)閉線程可以使用線程的interrupt()方法。該方法會(huì)向線程發(fā)送中斷信號(hào),線程會(huì)在下一個(gè)阻塞IO、sleep、wait等位置檢查是否被中斷,如果被中斷則會(huì)跳出阻塞狀態(tài)。
public class MyRunnable implements Runnable { private volatile boolean flag = true; public void stop(){ flag = false; } @Override public void run() { while (flag) { try { Thread.sleep(1000); System.out.println("thread is running"); } catch (InterruptedException e) { System.out.println("thread is interrupted"); flag = false; } } } } public class Main { public static void main(String[] args) throws InterruptedException { MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable); thread.start(); Thread.sleep(5000); myRunnable.stop(); } }
在上述代碼中,MyRunnable實(shí)現(xiàn)了Runnable接口,通過(guò)判斷flag的值來(lái)決定線程是否運(yùn)行。在Main方法中,首先啟動(dòng)了一個(gè)線程,然后等待5秒鐘之后,調(diào)用了MyRunnable的stop()方法,將flag值修改為false,從而停止了線程。
開啟線程可以通過(guò)創(chuàng)建線程對(duì)象并調(diào)用start()方法來(lái)實(shí)現(xiàn)。Java有兩種方式創(chuàng)建線程:
- 通過(guò)實(shí)現(xiàn)Runnable接口;
- 通過(guò)繼承Thread類。
public class MyThread extends Thread { @Override public void run() { System.out.println("thread is running"); } } public class Main { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); } }
上述代碼實(shí)現(xiàn)了通過(guò)繼承Thread類來(lái)創(chuàng)建線程。創(chuàng)建線程對(duì)象myThread,然后調(diào)用start()方法啟動(dòng)線程。線程會(huì)執(zhí)行run()方法中的代碼。在這個(gè)例子中就是簡(jiǎn)單的打印一句話。