Java-多種多線程實現實例

事不如人願,最近比較動盪,想想還是把java的基礎知識都整理下,好面對後續的大變動。這一節主要介紹下線程實現的幾個實例

一、Runnable

/**
 * 線程實現一:通過實現Runnable接口創建線程類(1.創建一個Runnable接口子類 MyRunable,並且重寫run方法;2.實例化MyRunable的實例,作爲入參提供給Thread)
 * 步驟:1.定義Runnable接口的實現類,並重寫該接口的run()方法;2.創建Runnable實現類的實例,並以此實例作爲Thread的target對象,即該Thread對象纔是真正的線程對象
 * 具體框架:    Thread t = new Thread(new Runnable() {public void run() {邏輯實現}});          t.start();
 */

public class DoRunnable {
    
    public static void thread1(){
        //寫法一:Runnable接口實現類寫在其它地方
        for(int i = 0; i < 10; i++) {
            Thread t1 = new Thread(new MyRunable());
            t1.start();
        }

                
        //寫法二:Runnable接口實現類在當前類實現,推薦寫法
        for(int i = 0; i < 10; i++) {
            Thread t2 = new Thread(new Runnable() {
                public void run() {
                    System.out.println("<<<<<<<<<<<<"+ "function1-2:" + Thread.currentThread().getName() + "<<<<<<<<<<<"+ System.currentTimeMillis()+"" +"<<<<<<<<<<<");
                }
            });
            t2.start();
        }
        
        //錯誤操作:for循環加到哪裏才能啓用不同線程?一定要在t.start中t的最外層(即for循環裏面完成多線程操作),如下實際10次循環都是一個線程在進行,線程名稱都一致
        Thread t3 = new Thread(new Runnable() {
            public void run() {
                for (int i = 0; i < 10; i++) {
                    System.out.println("<<<<<<<<<<<<"+ "function1-3:" + Thread.currentThread().getName() + "<<<<<<<<<<<"+ System.currentTimeMillis()+"" +"<<<<<<<<<<<");
                }
            }
        });
        t3.start();    
        
    }
        
    public static void main(String[] args) {
        thread1();
    }
    
}

 

/**
 * 
 * Runnable接口子類的實例
 *
 */

public class MyRunable implements Runnable{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("<<<<<<<<<<<<"+ "function1-1:" + Thread.currentThread().getName() + "<<<<<<<<<<<"+ System.currentTimeMillis()+"" +"<<<<<<<<<<<");    
    }
}

 

運行結果:

<<<<<<<<<<<<function1-1:Thread-1<<<<<<<<<<<1565169345774<<<<<<<<<<<
<<<<<<<<<<<<function1-1:Thread-0<<<<<<<<<<<1565169345774<<<<<<<<<<<
<<<<<<<<<<<<function1-1:Thread-2<<<<<<<<<<<1565169345774<<<<<<<<<<<
<<<<<<<<<<<<function1-1:Thread-3<<<<<<<<<<<1565169345774<<<<<<<<<<<
<<<<<<<<<<<<function1-1:Thread-4<<<<<<<<<<<1565169345775<<<<<<<<<<<
<<<<<<<<<<<<function1-1:Thread-5<<<<<<<<<<<1565169345775<<<<<<<<<<<
<<<<<<<<<<<<function1-1:Thread-6<<<<<<<<<<<1565169345775<<<<<<<<<<<
<<<<<<<<<<<<function1-1:Thread-7<<<<<<<<<<<1565169345775<<<<<<<<<<<
<<<<<<<<<<<<function1-1:Thread-8<<<<<<<<<<<1565169345776<<<<<<<<<<<
<<<<<<<<<<<<function1-1:Thread-9<<<<<<<<<<<1565169345776<<<<<<<<<<<
<<<<<<<<<<<<function1-2:Thread-10<<<<<<<<<<<1565169345776<<<<<<<<<<<
<<<<<<<<<<<<function1-2:Thread-13<<<<<<<<<<<1565169345776<<<<<<<<<<<
<<<<<<<<<<<<function1-2:Thread-12<<<<<<<<<<<1565169345776<<<<<<<<<<<
<<<<<<<<<<<<function1-2:Thread-11<<<<<<<<<<<1565169345776<<<<<<<<<<<
<<<<<<<<<<<<function1-2:Thread-16<<<<<<<<<<<1565169345777<<<<<<<<<<<
<<<<<<<<<<<<function1-2:Thread-14<<<<<<<<<<<1565169345777<<<<<<<<<<<
<<<<<<<<<<<<function1-2:Thread-15<<<<<<<<<<<1565169345777<<<<<<<<<<<
<<<<<<<<<<<<function1-2:Thread-17<<<<<<<<<<<1565169345777<<<<<<<<<<<
<<<<<<<<<<<<function1-2:Thread-19<<<<<<<<<<<1565169345777<<<<<<<<<<<
<<<<<<<<<<<<function1-2:Thread-18<<<<<<<<<<<1565169345777<<<<<<<<<<<
<<<<<<<<<<<<function1-3:Thread-20<<<<<<<<<<<1565169345778<<<<<<<<<<<
<<<<<<<<<<<<function1-3:Thread-20<<<<<<<<<<<1565169345778<<<<<<<<<<<
<<<<<<<<<<<<function1-3:Thread-20<<<<<<<<<<<1565169345778<<<<<<<<<<<
<<<<<<<<<<<<function1-3:Thread-20<<<<<<<<<<<1565169345778<<<<<<<<<<<
<<<<<<<<<<<<function1-3:Thread-20<<<<<<<<<<<1565169345778<<<<<<<<<<<
<<<<<<<<<<<<function1-3:Thread-20<<<<<<<<<<<1565169345778<<<<<<<<<<<
<<<<<<<<<<<<function1-3:Thread-20<<<<<<<<<<<1565169345778<<<<<<<<<<<
<<<<<<<<<<<<function1-3:Thread-20<<<<<<<<<<<1565169345778<<<<<<<<<<<
<<<<<<<<<<<<function1-3:Thread-20<<<<<<<<<<<1565169345778<<<<<<<<<<<
<<<<<<<<<<<<function1-3:Thread-20<<<<<<<<<<<1565169345778<<<<<<<<<<<

 

二、Thread

/**
 * 線程實現二:通過繼承Thread類創建線程類
 * 步驟:1.定義一個繼承Thread類的子類,並重寫該類的run()方法;2.創建Thread子類的實例,即創建了線程對象;3.調用該線程對象的start()方法啓動線程
 * 具體框架:    MyThread繼承Thread重寫run方法             Thread t = new MyThread();          t.start();
 */

public class DoThread extends Thread{
    
    public static void thread2() {
        for(int i = 0; i < 10; i++) {
            Thread t = new MyThread();            
            t.start();
        }
    }

    public static void main(String[] args) {
        thread2();
    }

}

 

public class MyThread extends Thread {
    public void run() {
            System.out.println("<<<<<<<<<<<<"+ "function2:" + Thread.currentThread().getName() + "<<<<<<<<<<<"+ System.currentTimeMillis()+"" +"<<<<<<<<<<<");
    }
}

 

運行結果:

<<<<<<<<<<<<function2:Thread-0<<<<<<<<<<<1565170183877<<<<<<<<<<<
<<<<<<<<<<<<function2:Thread-3<<<<<<<<<<<1565170183877<<<<<<<<<<<
<<<<<<<<<<<<function2:Thread-1<<<<<<<<<<<1565170183877<<<<<<<<<<<
<<<<<<<<<<<<function2:Thread-2<<<<<<<<<<<1565170183877<<<<<<<<<<<
<<<<<<<<<<<<function2:Thread-4<<<<<<<<<<<1565170183878<<<<<<<<<<<
<<<<<<<<<<<<function2:Thread-5<<<<<<<<<<<1565170183878<<<<<<<<<<<
<<<<<<<<<<<<function2:Thread-6<<<<<<<<<<<1565170183878<<<<<<<<<<<
<<<<<<<<<<<<function2:Thread-7<<<<<<<<<<<1565170183878<<<<<<<<<<<
<<<<<<<<<<<<function2:Thread-8<<<<<<<<<<<1565170183878<<<<<<<<<<<
<<<<<<<<<<<<function2:Thread-9<<<<<<<<<<<1565170183879<<<<<<<<<<<

 

三、Callable

。。。

 

總結:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章