⑴ java中Thread t=new Thread(new Runnable(){});這是怎麼回事介面還能這么玩謝謝!
JAVA是面向對象的,也就是說,對於一個方法等,它需要什麼類型的對象,只要傳入就可以了。
像這里,Thread類的構造方法中,需要一個實現了Runnable介面的對象,而new就是生成了個Runnable介面下的一個實例對象。
不知明白否
⑵ java初始化Thread t1 = new Thread(new TimePrinter(1000, "Fast Guy"))是什麼意思
Thread(Runnable target)
Thread(String name)
以上是api中的兩個thread的一個參數的構造方法,均是為了分配一個新的線程。
兩個構造函數一個傳入的是runnable對象,一個是string這個線程的名字。
縱觀你的java類,new TimePrinter(1000, "Fast Guy")即為創建了一個你當前類的對象,而你當前類實現了Runnable 介面,即你新建一個當前類的對象即為runnable對象,如此我們可以很清晰的看到new Thread(new TimePrinter(1000, "Fast Guy")),向Thread t1中傳遞的為一個runnable對象,即為這個t1的線程中綁定了你當前類的一個run方法在其中。
而接下來,t1.start();即為啟動當前類的run方法,傳遞進去的1000即為線程Thread.sleep(pauseTime); 的睡眠時間。
整觀整個java類的作用即是列印輸出你傳入的name名字加當前時間,線程睡眠一秒鍾之後。不停的循環列印你當前的名字和時間。
PS:多看api,多動腦筋想問題,多寫代碼,總有一天你也會成長為一個高手。
⑶ 關於 java 線程 Thread thread = new Thread(this);
這是的this表示當前類對象,也就是Thread
thread
=
new
Thread(this),
這段代碼所處的類對象,想必當前類實現了Runnable介面,實現了Runnable介面的run方法,那Thread
thread
=
new
Thread(this)
表示創建一個線程對象(thread),當調用thread.start()時則表示開啟線程,准備執行線程中的run方法。
⑷ JAVA中Thread t = new Thread(); //創建另一線程t後該如何定義線程t
可以這樣
class MyThread extends Thread{
public void run(){
System.out.println("Mythread 線程");
}
}
MyThread t = new Mythread();
t.start();
或者這樣
Thread t = new Thread(new Runnabel(){
public void run(){
System.out.println("Mythread 線程");
}
});
t.start();
⑸ java裡面如何刪除掉一個線程,就是new Thread之後怎麼把這個new的Thread完完全全的殺掉
你定義一個新線程"myThread"時肯定要重寫它的run()方法,當你啟動這個線程時即new的時候要調用它是start()方法:new myThread().start();
之後該線程會自動調用它的run()方法,run()方法執行完後線程會自動關閉;
你也可以調用close()來關閉;
如果有任務的線程想暫停一段時間,再繼續任務,就別用close()方法,可以用sleep(3000)方法;3秒後線程繼續運行.
希望對你有用~~
⑹ Java 在一個方法裡面使用 new Thread(......).start(); 到底是好是壞
首先,從語法角度上來說,因為new Thread中使用的類肯定是匿名類,就意味著這個類一般只能被當前的這個Thread使用(不能復用)。同時,有些參數必須是final,意味著這些參數不能再被修改賦值。匿名類只是一個語法糖(Syntax Suger),僅僅讓你寫代碼容易方便而已,作用和你正規寫一個類,然後放到Thread中幾乎差不多,不存在性質上的好壞,只有語法上和你習慣上寫法的好壞而已。
⑺ java線程裡面Thread thread=new Thread(file,"aaa"),這裡面第二個參數什麼意思啊
線程名稱,這個可以自定義,如果不寫的話現正也會自己定義一個名字(thread-1),你也可以在run方法里使用thread.getName()來查看。
⑻ Java 在一個方法裡面使用 new Thread(......).start(); 到底是好是壞
這樣的習慣不好,LZ這樣的做法對於簡單的線程肯定是沒有問題的,但是匿名線程最大的問題是沒有辦法處理線程狀態的改變,比如說:
有一個線程,我們管它叫p 定義為new Thread().start(); 這個時候如果我們想讓這個線程在某種情況下掛起、休眠或者強制關閉的話,都是沒有辦法實現的,只能等著線程自動執行完,相當於為我們創建了一個沒有辦法人工操作的線程。
如果你的這個線程要用到原來方法中的變數的話,需要加上final,這個道理和內部類中使用該方法的變數是一個道理。
⑼ java Thread 在一個方法中new 了一個 Thread ,當這個線程在運行時再調用另外一個方法關閉這個線程
public class StopThread() implements Runnable{
//停止線程的標記值boolean;
private boolean flag = true;
public void stopThread()(){
flag = false;
}
public void run(){
int i=0;
while(flag){
i++;
System.out.println(Thread.currentThread().getName()+":"+i);
try{
Thread.sleep(1000);
}catch(Exception e){
}
System.out.println(Thread.currentThread().getName()+"==>"+i);
}
}
public static void main(String args[]){
StopThread st = new StopThread();
Thread th = new Thread(st);
Thread th1 = new Thread(st);
th.start();
th1.start();
try{
Thread.sleep(5500);
}catch(Exception e){
}
/*
如果使用Thread.stop方法停止線程,不能保證這個線程是否完整的運行完成一次
run方法;但是如果使用停止的標記位,那麼可以保正在真正停止之前完整的運行完
成一次run方法;
*/
th.stop();
st.stopThread();
}
}
你可以參考以上代碼,也就是設置一個全局變數,然後試試