Java併發學習筆記 線程篇

建立線程的幾種方式

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方法,其餘線程能夠調用它終止線程。可是這個方法已經被棄用了。線程

線程狀態

線程能夠有以下6種狀態:

  • New (新建立)
  • Runnable (可運行)
  • Blocked (被阻塞)
  • Waiting (等待)
  • Timed waiting (計時等待)
  • Terminated (被終止)

要肯定一個線程的當前狀態,可調用getState方法code

相關文章
相關標籤/搜索