一.進程是什麼?線程又是什麼?
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()
測試線程是否處於活動狀態。
五.線程安全問題
不行,頂不住啦。再不睡覺我得猝死了!下次總結吧,告辭!