創建線程的三種方式


  創建線程的方式三種:

 1 package cn.crxy.newThread;
 2 
 3 import java.util.concurrent.Callable;
 4 import java.util.concurrent.ExecutionException;
 5 import java.util.concurrent.FutureTask;
 6 
 7 public class NewThreadDemo {
 8 
 9     public static void main(String[] args) throws InterruptedException, ExecutionException {
10         //第一種方式
11         Thread t1 = new Thread(){
12             
13             @Override
14             public void run() {
15                 System.out.println("new Thread 1");//輸出:new Thread 1
16             }
17         };//創建線程
18         
19         t1.start();//啟動線程
20         System.out.println(t1.getName());//輸出:Thread-0
21         
22         //第二種方式
23         Thread t2 = new Thread(new Runnable() {
24             
25             @Override
26             public void run() {
27                 System.out.println("new Thread 2");//輸出:new Thread 2
28             }
29         });
30         
31         t2.start();
32 
33         System.out.println(Thread.currentThread().getName());//輸出:main
34         
35         
36         //第三種方式
37         FutureTask<String> ft = new FutureTask<String>(new Callable<String>() {
38             
39             @Override
40             public String call() throws Exception {
41                 System.out.println("new Thread 3");//輸出:new Thread 3
42                 return "aaaa";
43             }
44         });
45         
46         Thread t3 = new Thread(ft);
47         t3.start();
48         String result = ft.get();
49         System.out.println(result);//輸出:aaaa
50         
51     }
52 }

首先要明白什么是線程?

明白線程之前要明白什么是進程?

進程是什么呢?  進程是計算機中運行的一個應用程序.

線程:執行該進程的邏輯單元.  線程是用來執行進程的.

 

Java中萬物皆對象,線程也被描述成了一個對象就是Thread對象.

Java對多線程的支持也是特別完善的,特別是JDK1.5之后.

 

首先明白什么是線程? 什么是進程?

進程就是計算機中運行的一個應用程序.    線程就是執行該進程的邏輯單元.

 

線程管理:

         創建線程的方式:

                   1.繼承Thread類,並復寫run方法,創建該類對象,調用start方法開啟線程。

                   2.實現Runnable接口,復寫run方法,創建Thread類對象,將Runnable子類對象傳遞給Thread類對象。調用start方法開啟線程。

                  

                   第二種方式好,將線程對象和線程任務對象分離開。降低了耦合性,利於維護

                  

                   3.創建FutureTask對象,創建Callable子類對象,復寫call(相當於run)方法,將其傳遞給FutureTask對象(相當於一個Runnable)。

                     創建Thread類對象,將FutureTask對象傳遞給Thread對象。調用start方法開啟線程。這種方式可以獲得線程執行完之后的返回值。

 

第三種使用Runnable功能更加強大的一個子類.這個子類是具有返回值類型的任務方法.

第一種和第二種兩種方式是run()方法運行完是沒有返回值的.

線程的信息: 

 1 public class ThreadInfo {
 2 
 3     public static void main(String[] args) {
 4         
 5         Thread t1 = new Thread(new Runnable() {
 6             
 7             @Override
 8             public void run() {
 9                 synchronized (ThreadInfo.class) {
10                     System.out.println("Thread");
11                 }
12             }
13         });
14         
15         t1.start();
16         
17         
18         System.out.println(t1.getId());
19         System.out.println(t1.getName());
20         System.out.println(t1.getPriority());//優先級 1-10
21         System.out.println(t1.getState());//線程狀態: NEW TERMINATED RUNNABLE TIMED_WAITING WAITING BLOCKED
22     }
23 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM