public class T02_HowToCreateThread { static class MyThread extends Thread { @Override public void run() { System.out.println("Hello MyThread!"); } } static class MyRun implements Runnable { @Override public void run() { System.out.println("Hello MyRun!"); } } static class MyCall implements Callable<String> { @Override public String call() { System.out.println("Hello MyCall"); return "success"; } }
public static void main(String[] args) { new MyThread().start(); //第一種 直接經過Thread new Thread(new MyRun()).start(); //第二種 Runnable new Thread(()->{ //第三種 lambda System.out.println("Hello Lambda!"); }).start(); Thread t = new Thread(new FutureTask<String>(new MyCall())); //第四種 t.start(); ExecutorService service = Executors.newCachedThreadPool(); //第五種 使用Executor service.execute(()->{ System.out.println("Hello ThreadPool"); }); service.shutdown(); } }
當線程的run方法執行方法體中的最後一條語句後,並經由執行return語句返回時,或者出現了在方法中沒有捕獲的異常時,線程將終止。ide
沒有能夠強制線程終止的方法。然而,interrupt方法能夠用來請求終止線程。spa
Java早期版本中,還有一個stop方法,其餘線程能夠調用它終止線程。可是這個方法已經被棄用了。線程
要肯定一個線程的當前狀態,可調用getState方法code