導航:首頁 > 編程語言 > java如何實現線程

java如何實現線程

發布時間:2021-02-27 19:56:45

java中如何實現多線程

1.實現Runnable介面
2.繼承Thread類

覆蓋裡面的 run方法 即可。~

Ⅱ java中如何啟動一個新的線程

java開啟新線程的三種方法:

方法1:繼承類

1):定義一個繼承自Java.lang.Thread類的類A.

2):覆蓋A類Thread類中的run方法。

3):我們編寫需要在run方法中執行的操作:run方法中的代碼,線程執行體。

4):在main方法(線程)中,創建一個線程對象並啟動線程。

(1)創建線程類對象:

A類 a = new A類();

(2)調用線程對象的start方法:

a.start();//啟動一個線程

注意:不要調用run方法。如果run方法被稱為對象調用方法,則仍然只有一個線程,並且沒有啟動新線程。

創建啟動線程實例:

(2)java如何實現線程擴展閱讀:

啟動新線程的兩種方式對比

繼承方式:

1):從設計上分析,Java中類是單繼承的,如果繼承了Thread了,該類就不能再有其他的直接父類了.

2):從操作上分析,繼承方式更簡單,獲取線程名字也簡單.(操作上,更簡單)

3):從多線程共享同一個資源上分析,繼承方式不能做到.

實現方式:

1):從設計上分析,Java中類可以多實現介面,此時該類還可以繼承其他類,並且還可以實現其他介面,設計更為合理.

2):從操作上分析,實現方式稍微復雜點,獲取線程名字也比較復雜,得使用Thread.currentThread()來獲取當前線程的引用.

3):從多線程共享同一個資源上分析,實現方式可以做到(是否共享同一個資源).

補充:實現方式獲取線程名字:

String name = Thread.currentThread().getName();



Ⅲ java中如何實現線程的加入


{
publicMyJoinThread()
{
();
}
publicMyJoinThread(Stringname)
{
super(name);
}
publicvoidrun()
{
for(inti=0;i<10;i++)
{
System.out.println(super.getName()+":"+i);
}
}
}
publicclassJoinTest
{
publicstaticvoidmain(String[]args)
{
MyJoinThreadthread=newMyJoinThread("第1個線程");
thread.start();
for(inti=0;i<10;i++)
{
System.out.println(Thread.currentThread().getName()+":"+i);
if(i==5)
{
try
{
thread.join();
}
catch(InterruptedExceptione)
{
System.out.println("線程被中斷");
}
}
}
}
}

Ⅳ java怎麼創建一個線程

Java線程類也是一個類,它的實例都繼承自java.lang.Thread或其子類。可以用如下方式用java中創建一個線程:

Treadthread=newThread();

執行該線程可以調用該線程的start()方法:

thread.start();

編寫線程運行時執行的代碼有兩種方式:一種是創建Thread子類的一個實例並重寫run方法,第二種是創建類的時候實現Runnable介面。接下來我們會具體講解這兩種方法:

創建Thread的子類

創建Thread子類的一個實例並重寫run方法,run方法會在調用start()方法之後被執行。例子如下:

{
publicvoidrun(){
System.out.println("MyThreadrunning");
}
}

可以用如下方式創建並運行上述Thread子類

MyThreadmyThread=newMyThread();
myTread.start();

一旦線程啟動後start方法就會立即返回,而不會等待到run方法執行完畢才返回。就好像run方法是在另外一個cpu上執行一樣。當run方法執行後,將會列印出字元串MyThread running。

實現Runnable介面

第二種編寫線程執行代碼的方式是新建一個實現了java.lang.Runnable介面的類的實例,實例中的方法可以被線程調用。下面給出例子:

{
publicvoidrun(){
System.out.println("MyRunnablerunning");
}
}

為了使線程能夠執行run()方法,需要在Thread類的構造函數中傳入MyRunnable的實例對象。示例如下:

Threadthread=newThread(newMyRunnable());
thread.start();

當線程運行時,它將會調用實現了Runnable介面的run方法。上例中將會列印出」MyRunnable running」。

Ⅳ 如何在java中實現線程

1 繼承Thread類 ,使用new Thread().start();
public class ThreadTest extends Thread {
private static int count = 0;
public void run() {
{
System.out.println("ThreadTest" + count);
Random ran = new Random();
int time = ran.nextInt(1000);
System.out.println("休眠時間=" + time);
TimeUnit.MILLISECONDS.sleep(time);
count++;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

2實現Runnable介面 使用依託於Tread 類:new Thread(new Runnable()).start();
public class RunnableTest implements Runnable{

private static int count = 0;
public RunnableTest (){
}

public void run() {
System.out.println("RunnableTest" + count);
// 線程調度器,可以切換線程
Thread.yield();
count++;
}

}

Ⅵ java中怎樣實現多線程

//簡單的演示,四個人吃包子,各吃各的!
publicclassThreadTest{
publicstaticvoidmain(String[]args){
String[]arr={"張回333","李----四","-----王五答","趙六666"};
for(inti=0;i<4;i++){
newThread(newRunnable(){
inta=1;
publicvoidrun(){
while(a<100)
System.out.println(Thread.currentThread().getName()+"在吃包子,吃了"+(a++)+"個了");
}
},arr[i]){
}.start();
}
}
}

Ⅶ java中有幾種方法可以實現一個線程

java5以前,有如下兩種:
有兩種實現方法,分別使用new Thread()和new Thread(runnable)形式,第一種直接調用thread的run方法,所以,我們往往使用Thread子類,即new SubThread()。第二種調用runnable的run方法。
第一種:
new Thread(){}.start();這表示調用Thread子類對象的run方法,new Thread(){}表示一個Thread的匿名子類的實例對象,子類加上run方法後的代碼如下:
new Thread(){
public void run(){
}
}.start();

第二種:
new Thread(new Runnable(){}).start();這表示調用Thread對象接受的Runnable對象的run方法,new Runnable(){}表示一個Runnable的匿名子類的實例對象,runnable的子類加上run方法後的代碼如下:
new Thread(new Runnable(){
public void run(){
}
}
).start();
從java5開始,還有如下一些線程池創建多線程的方式:
ExecutorService pool = Executors.newFixedThreadPool(3)
for(int i=0;i<10;i++)
{
pool.execute(new Runable(){public void run(){}});
}
Executors.newCachedThreadPool().execute(new Runable(){public void run(){}});
Executors.newSingleThreadExecutor().execute(new Runable(){public void run(){}});

Ⅷ 如何實現java線程間

線程間的通信方式
同步
這里講的同步是指多個線程通過synchronized關鍵字這種方式來實現線程間的通信。
參考示例:
public class MyObject {
synchronized public void methodA() {
//do something....
}
synchronized public void methodB() {
//do some other thing
}
}
public class ThreadA extends Thread {
private MyObject object;
//省略構造方法
@Override
public void run() {
super.run();
object.methodA();
}
}
public class ThreadB extends Thread {
private MyObject object;
//省略構造方法
@Override
public void run() {
super.run();
object.methodB();
}
}
public class Run {
public static void main(String[] args) {
MyObject object = new MyObject();
//線程A與線程B 持有的是同一個對象:object
ThreadA a = new ThreadA(object);
ThreadB b = new ThreadB(object);
a.start();
b.start();
}
}
由於線程A和線程B持有同一個MyObject類的對象object,盡管這兩個線程需要調用不同的方法,但是它們是同步執行的,比如:線程B需要等待線程A執行完了methodA()方法之後,它才能執行methodB()方法。這樣,線程A和線程B就實現了 通信。
這種方式,本質上就是「共享內存」式的通信。多個線程需要訪問同一個共享變數,誰拿到了鎖(獲得了訪問許可權),誰就可以執行。

閱讀全文

與java如何實現線程相關的資料

熱點內容
不要錢免費看電影網站 瀏覽:425
u盤刪除文件可以恢復嗎 瀏覽:138
在森林槍戰的國產電影 瀏覽:133
食人癖女孩的電影 瀏覽:19
iphone5藍牙聽歌 瀏覽:802
al創世者電影完整版免費2023 瀏覽:303
小說電影免費網站有哪些 瀏覽:567
應城市網站到期怎麼續費 瀏覽:772
360擴展器固件在哪升級 瀏覽:103
青春愛情激情電影 瀏覽:209
韓國電影 女主角在療養院工作 瀏覽:926
javascriptsidebar 瀏覽:769
義烏用什麼app坐公交 瀏覽:14
矩陣縱橫cad文件下載 瀏覽:832
四個字的動畫片 瀏覽:461
js最新皮膚2017 瀏覽:587
恐怖電影無限流小說 瀏覽:178
主人公葉天的小說 瀏覽:834
dede採集基礎教程 瀏覽:487
牌技百度雲網盤文件 瀏覽:306

友情鏈接