1. 在java中啟動線程使用run()還是start()

啟動一個線來程用start()方法,使線程所代自表的虛擬處理機處於可運行的狀態,這意味著它可以有JVM(java虛擬機)來調度和執行,這並不意味著線程就會立即執行。run()方法可以產生必須退出的標志來停止一個線程。

2. java線程怎麼run方法內添加方法

run()方法:在本線程內調用該Runnable對象的run()方法,可以重復多次調用;

package com.ljq.test;

public class ThreadTest {

/**
* 觀察直接調用run()和用start()啟動一個線程的差別
*
* @param args
* @throws Exception
*/
public static void main(String[] args){
Thread thread=new ThreadDemo();
//第一種
//表明: run()和其他方法的調用沒任何不同,main方法按順序執行了它,並列印出最後一句
//thread.run();

//第二種
//表明: start()方法重新創建了一個線程,在main方法執行結束後,由於start()方法創建的線程沒有運行結束,
//因此主線程未能退出,直到線程thread也執行完畢.這里要注意,默認創建的線程是用戶線程(非守護線程)
//thread.start();

//第三種
//1、為什麼沒有列印出100句呢?因為我們將thread線程設置為了daemon(守護)線程,程序中只有守護線程存在的時候,是可以退出的,所以只列印了七句便退出了
//2、當java虛擬機中有守護線程在運行的時候,java虛擬機會關閉。當所有常規線程運行完畢以後,
//守護線程不管運行到哪裡,虛擬機都會退出運行。所以你的守護線程最好不要寫一些會影響程序的業務邏輯。否則無法預料程序到底會出現什麼問題
//thread.setDaemon(true);
//thread.start();

//第四種
//用戶線程可以被System.exit(0)強制kill掉,所以也只列印出七句
thread.start();
System.out.println("main thread is over");
System.exit(1);
}

public static class ThreadDemo extends Thread{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("This is a Thread test"+i);
}
}
}
}

3. java線程中run和start方法的區別

run只是運行這個方法 並不會開啟一個新的線程
start 是開啟一個線程 並且運行run方法

4. java線程的run()方法執行的數據如何利用

當一個線程調用它的start()方法後,虛擬機就會去調用這個線程中的run()方法。
如myThread是一個線程對象,調用myThread.start();後,當CPU輪到這個線程使用時,虛擬機就會去調用這個線程的run()方法。

5. java線程中的run()方法能有幾個

同一個類中只能有一個,但可以建立不同的線程類

6. Java線程中run和start方法的區別

區別:調用start方法實現多線程,而調用run方法沒有實現多線程
Start:
用start方法來啟動線程,真正實現了多線程運行,這時無需等待run方法體代碼執行完畢而直接繼續執行下面的代碼。通過調用Thread類的start()方法來啟動一個線程,這時此線程處於就緒(可運行)狀態,並沒有運行,一旦得到spu時間片,就開始執行run()方法,這里方法run()稱為線程體,它包含了要執行的這個線程的內容,Run方法運行結束,此線程隨即終止。
Run:
run()方法只是類的一個普通方法而已,如果直接調用Run方法,程序中依然只有主線程這一個線程,其程序執行路徑還是只有一條,還是要順序執行,還是要等待run方法體執行完畢後才可繼續執行下面的代碼,這樣就沒有達到寫線程的目的。
總結:調用start方法方可啟動線程,而run方法只是thread的一個普通方法調用,還是在主線程里執行。

7. Java線程中run和start方法的區別

兩種方法的區別
1) start:

start方法來啟動線程,真正實現了多線程運行,這時無需等待run方法體代碼執行完畢而直接繼續執行下面的代碼。通過調用Thread類的
start()方法來啟動一個線程,這時此線程處於就緒(可運行)狀態,並沒有運行,一旦得到cpu時間片,就開始執行run()方法,這里方法
run()稱為線程體,它包含了要執行的這個線程的內容,Run方法運行結束,此線程隨即終止。
2) run:
run()
方法只是類的一個普通方法而已,如果直接調用Run方法,程序中依然只有主線程這一個線程,其程序執行路徑還是只有一條,還是要順序執行,還是要等待
run方法體執行完畢後才可繼續執行下面的代碼,這樣就沒有達到寫線程的目的。總結:調用start方法方可啟動線程,而run方法只是thread的一
個普通方法調用,還是在主線程里執行。這兩個方法應該都比較熟悉,把需要並行處理的代碼放在run()方法中,start()方法啟動線程將自動調用
run()方法,這是由jvm的內存機制規定的。並且run()方法必須是public訪問許可權,返回值類型為void.。

兩種方式的比較 :

實際中往往採用實現Runable介面,一方面因為java只支持單繼承,繼承了Thread類就無法再繼續繼承其它類,而且Runable介面只有一個run方法;另一方面通過結果可以看出實現Runable介面才是真正的多線程……

8. java線程run的方法

你用 Runnable 的話應該把

Thread t1 = new Thread();
Thread t2 = new Thread();

改成:

Thread t1 = new Thread(new TestSync());
Thread t2 = new Thread(new TestSync());

----------------------------------------------------------------
還有一種方法是用 extends Thread,然後你第一個類改成如下:

class TestSync extends Thread {
Timer timer = new Timer();
public static void main(String[] args){

TestSync t1 = new TestSync();
TestSync t2 = new TestSync();
t1.setName("t1");
t2.setName("t2");
t1.start();
t2.start();
}
public void run(){
timer.add(Thread.currentThread().getName());
//System.out.println("Error");
}
}

也可以。

9. java中線程的run()方法是什麼

上面幾個說的也是我要說的幾點,

run() 方法是不用參數的,不用傳他就會知道。

因為線程里邊內大多都是死循環,容和主線程同步運行。(當然實際不是這樣的。但可以這樣理解)

比如:定義一個用於轉換狀態的屬性。

static final int STATE_GAME_RUN = 0;
static final int STATE_GAME_OVER = 1;

int state;

run 方法里邊有這樣的:
switch(state)
case STATE_GAME_RUN :
System.out.println("游戲進行中");
break;
case STATE_GAME_OVER:
System.out.println("游戲結束");
break;

當主線程里邊state改變時,線程里邊馬上就會知道,還用傳