Ⅰ java中,通過實現Runnable介面來創建進程時,沒有繼承Thread類,為什麼卻可以創建Thread類對象
首先,Runnable 是Java 用來實現多線程的介面。
PS:Java中實現多線程有兩種途徑:繼承Thread類或者實現Runnable介面.
在使用Thread的時候只需要new一個實例出來,調用start()方法即可以啟動一個線程。
Thread Test = new Thread();
Test.start();
在使用Runnable的時候需要先new一個繼承Runnable的實例,之後用子類Thread調用。
Test impelements Runnable
Test t = new Test();
Thread test = new Thread(t);
在使用Runnable定義的子類中沒有start()方法,只有Thread類中才有。
實現Runnable介面相比 繼承Thread類有如下好處:
->避免點繼承的局限,一個類可以繼承多個介面。
Ⅱ java中如何使用Runnable介面實現線程
{
publicvoidrun()
{
System.out.println("通過實現Runable介面方式創建線程");
}
}
publicclassThreadTest2
{
publicstaticvoidmain(String[]args)
{
MyRunnablemr=newMyRunnable();
Threadthread=newThread(mr);
thread.start();
}
}
Ⅲ java中runnable和callable的區別
1、意義區別:
Runnable介面中的run()方法的返回值是void,它做的事情只是純粹地去執行run()方法中的代碼而已;
Callable介面中的call()方法是有返回值的,是一個泛型,和Future、FutureTask配合可以用來獲取非同步執行的結果。
2、使用方法區別:
定義runnable介面的實現類,並重寫該介面的run()方法,該run()方法的方法體同樣是該線程的線程執行體。
創建 Runnable實現類的實例,並依此實例作為Thread的target來創建Thread對象,該Thread對象才是真正的線程對象。
舉例說明:
package org.thread.demo;
class MyThread extends Thread{
private String name;
public MyThread(String name) {
super();
this.name = name;
}
public void run(){
for(int i=0;i<10;i++){
System.out.println("線程開始:"+this.name+",i="+i);
}
Ⅳ java里為什麼有了Thread還要有一個Runnable介面
這要看它們的作用了,Thread是一個類,而Runnable是一個介面,兩個裡面都有run方法,Thread只能被繼承實現,Runnable 是implement ,舉個簡單的例子,如果你一個類繼承自另一個類,這時候你又想實現run方法,那麼只能使用runnable這個來實現,這是你這個問題最主要的一點,其次 ,runable 涉及資源可以共享這個問題,而繼承自Thread類的方法,資源是相對獨立的。