package cn.itcast.demo16.Demo07.Runnable;
/**
* @author newcityman
* @date 2019/7/22 - 23:17
*/
public class RunnableImpl implements Runnable {
@Override
public void run() {
for (int i = 0; i <20 ; i++) {
System.out.println(Thread.currentThread().getName()+"---->"+i);
}
}
}
package cn.itcast.demo16.Demo07.Runnable;
/**
* @author newcityman
* @date 2019/7/22 - 23:17
*/
public class RunnableImpl2 implements Runnable {
@Override
public void run() {
for (int i = 0; i <20 ; i++) {
System.out.println("hello world---->"+i);
}
}
}
package cn.itcast.demo16.Demo07.Runnable;
/**
* @author newcityman
* @date 2019/7/22 - 23:18
* 創建多線程的第二種方式:實現Runnable接口
* java.lang.Runnable
* Runnable 接口應該由那些打算通過某一線程執行其實例的類來實現。類必須定一個稱為run的無參方法
* java.lang.Thread類的構造方法
*
*
* 實現步驟:
* 1、創建一個Runnable接口的實現類
* 2、在實現類中重寫Runnable接口的run方法,設置線程任務
* 3、創建一個Runnable實現類的對象
* 4、創建一個Thread類對象,其構造方法的參數傳遞Runnable實現類的對象
* 5、調用Thread類中的start()方法
*
* 實現Runnable接口創建多線程的優點
* 1、避免單繼承的局限性
* 一個類只能繼承一個類,類繼承了Thread類就不能夠繼承其他的類了
* 實現Runnable接口,還可以繼承其他的類,實現其他的接口
* 2、增強了程序的擴展性,降低了程序的耦合性(解耦)
* 實現Runnable接口的方式,吧設置線程任務和開啟線程進行了分離(解耦)
* 實現類中,重寫了run方法,用來設置線程任務
* 創建Thread類對象,調用Start方法,用來開啟新線程
*/
public class Demo01Runnable {
public static void main(String[] args) {
RunnableImpl impl = new RunnableImpl();
Thread t = new Thread(impl);
t.start();
System.out.println("=========================");
new Thread(new RunnableImpl2()).start();
for (int i = 0; i <20 ; i++) {
System.out.println(Thread.currentThread().getName()+"---->"+i);
}
}
}