Java多執行緒學習之 建立執行緒

2021-09-25 01:30:32 字數 2141 閱讀 9889

實現多執行緒的方法有3種:

1、繼承thread類

thread實現了runnable介面

public class mythread extends thread

}

呼叫:

mythread mt = new mythread();

mt.start();

2、實現runnable介面

public class myrunable implements runnable

}

呼叫

myrunable mr = new myrunable();

thread th = new thread(mr);

th.start();

3、實現callable介面

public class mycallable implements callable

}

呼叫

mycallable mc = new mycallable();

executorservice es = new threadpoolexecutor(3, 3, 100l, timeunit.seconds, new linkedblockingqueue<>(), new threadpoolexecutor.discardoldestpolicy());

futuref = es.submit(mc);

try catch (exception e)

執行緒中的一些方法:

1、currentthread()

此方法可返回**段正在被哪個執行緒呼叫的資訊:

//此方法獲取當前執行緒名稱

thread.currentthread().getname();

//此方法的功能時判斷當前執行緒是否處於活動的狀態

thread.currentthread().isalive();

//此方法獲取執行緒唯一標識

thread.currentthread().getid();

//此方法讓當前執行緒休眠指定毫秒數

thread.currentthread().sleep(1000);//或者thread.sleep(1000)

2、interrupt停止執行緒

下面三個方法已廢棄:

//停止執行緒

thread.currentthread().stop();

//暫停執行緒

thread.currentthread().suspend();

//恢復執行緒

thread.currentthread().resume();

中斷執行緒:

//中斷執行緒,此方法只是打了個斷點,並沒有直接中斷,

//如果執行緒在呼叫 object 類的 wait方法,該類的 join方法或sleep方法過程中受阻,

//則其中斷狀態將被 清除,它還將收到乙個 interruptedexception

thread.currentthread().interrupt();

//判斷執行緒是否中斷,並清除狀態

thread.currentthread().interrupted();

//判斷執行緒是否中斷,不清除狀態

thread.currentthread().isinterrupted();

3、setpriority執行緒優先順序

thread.currentthread().setpriority(1);
優先順序較高的執行緒得到的cpu資源較多,但是不一定最先執行。

優先順序具有隨機性;

優先順序具有繼承性。

4.yield方法

thread.currentthread().yield();
yield()方法的作用是放棄當前cpu資源,但放棄的時間不確定,可能剛放棄,馬上又獲得cpu時間片。

Java多執行緒學習之 執行緒池

一 executor s及其executorservice 二 executors工廠建立執行緒池 三 threadpoolexecutor建立執行緒池 executors底層是通過threadpoolexecutor實現的。建議使用threadpoolexecutor實現自定義執行緒池 publi...

Java建立多執行緒

到目前為止,我們僅用到兩個執行緒 主線程和乙個子執行緒。然而,你的程式可以建立所需的更多執行緒。例如,下面的程式建立了三個子執行緒 create multiple threads.class newthread implements runnable this is the entry point ...

Java建立多執行緒

繼承 thread 方式建立子執行緒 1.建立乙個繼承thread的子類 2.重寫thread類的run 方法,實現子執行緒要完成的功能 3.在主線程類中建立乙個子執行緒類的物件 4.呼叫子執行緒類的start 方法,啟動此子執行緒 實際上start 方法是呼叫了該類的run 方法 package ...