Java的每日記-多線程

一.進程是什麼?線程又是什麼?
1.進程是指在系統中正在運行的應用程序,程序一旦運行就是進程;
在電腦上打開任務管理器就能看到自己運行了哪些進程。
2.線程是進程中的一個實體,是被系統獨立調度和分派的基本單位;
比如在360殺毒軟件中,我們既可以安全體檢也可以清理垃圾,這裏的安全體檢是360殺毒軟件中的一個線程,清理電腦中的垃圾也是一個線程。
3.進程是負責整個程序的運行,而線程是程序中具體的某個獨立功能的運行;
二.線程的生命週期

三.線程的三種創建方式
//茴香豆的四種寫法。好吧,正經一點。
1.通過繼承 Thread 類本身

	//定義一個類來繼承Thread類
class NewThread extends Thread {
    //重寫run方法,來執行我想要執行的代碼
    @Override
    public void run() {
        //線程要執行的代碼
    }
}

public class test {
    public static void main(String[] args) {
    	//創建NewThread對象
        NewThread newThread = new NewThread();
         //啓動線程
        newThread.start();
    }
}

2.通過實現Runnable接口

    //定義一個類來實現Runnable接口
class Task implements Runnable{
    //重寫run方法,來執行我想要執行的代碼
    @Override
    public void run() {
        //線程要執行的代碼
    }
}

public class test {
    public static void main(String[] args) {
        //獲取Task對象
        Task task = new Task();
        //創建線程類Thread的對象,並把任務類對象和定義的線程名字作爲參數傳遞
        Thread newthread = new Thread(task, "新線程");
        //啓動線程
        newthread.start();
    }
}

3.通過 Callable 和 Future 創建線程
public class CallableTest implements Callable {

@Override  
public Integer call() throws Exception {  
    // TODO Auto-generated method stub  

    int i = 0;  
    for (; i < 10; i++) {  
        // 當前線程  
        System.out.println("線程名" + ":" + Thread.currentThread()+ ":"+ i );  
    }  
    return i;  
}  

public static void main(String[] args) {  
    CallableTest call = new CallableTest();  
    FutureTask<Integer> fu = new FutureTask<Integer>(call);  
    Thread th = new Thread(fu, "有返回值的線程");  

    for (int i = 0; i < 1; i++) {  
        // 當前線程  
        System.out.println(Thread.currentThread().getName());  
        if (i == 0) {  
            // 啓動第一個線程  
            th.start();  
        }  
    }
	
    try {  
        System.out.println("返回值是:" + fu.get());  
      } catch (Exception e) {  
        e.printStackTrace();  
    }  
  }  
}  

四.Thread常用方法

1	public void start()
使該線程開始執行;Java 虛擬機調用該線程的 run 方法。
2	public void run()
如果該線程是使用獨立的 Runnable 運行對象構造的,則調用該 Runnable 對象的 run 方法;否則,該方法不執行任何操作並返回。
3	public final void setName(String name)
改變線程名稱,使之與參數 name 相同。
4	public final void setPriority(int priority)
 更改線程的優先級。
5	public final void setDaemon(boolean on)
將該線程標記爲守護線程或用戶線程。
6	public final void join(long millisec)
等待該線程終止的時間最長爲 millis 毫秒。
7	public void interrupt()
中斷線程。
8	public final boolean isAlive()
測試線程是否處於活動狀態。

五.線程安全問題
不行,頂不住啦。再不睡覺我得猝死了!下次總結吧,告辭!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章