Java中多執行緒的案例

A00000李發表於2020-12-21

執行緒實現(重點)

Thread(執行緒不一定立即執行,CPU安排排程)

  • 自定義執行緒類繼承Thread類
  • 重寫 run()類,編寫執行緒執行體
  • 建立執行緒物件,呼叫start()方法啟動執行緒

案例1: 多執行緒的執行順序

package Thread;

//建立執行緒方式一:繼承Thread類,重寫run()方法, 呼叫start開啟執行緒

//總結:注意 執行緒開啟不一定立即執行 ,由CPU排程執行
public class TestThread extends Thread {

       public void run(){
           //run方法執行緒體
           for (int i = 0; i < 200; i++) {
               System.out.println("我在學習Java的多執行緒------"+i);
           }
       }

    public static void main(String[] args) {
        //main執行緒, 主執行緒

        //建立一個執行緒物件
        TestThread testThread=new TestThread();
        //呼叫start()方法開啟執行緒
        testThread.start();

        for (int i = 0; i < 1000; i++) {
            System.out.println("我在學習JS的方法-------"+i);
        }

    }
}

案例2:實現多執行緒同步下載圖片

  1. 完成這個案例之前可以必須下載一個包 就是 commons-io-2.8.0.jar 如果就出現不了效果
  2. 在本個專案下建立一個 lib資料夾 複製進去 就可以了
  3. 如果想要這個包 可以私信博主
package Thread;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;

//練習Thread,實現多執行緒同步下載圖片
public class TestThreadPK extends Thread {
     private String url;  //網路圖片地址
     private String name; //儲存的檔名

    //建立有參構造
    public TestThreadPK(String url, String name){
        this.url=url;
        this.name=name;
    }

    public void run(){
        WebDownloader webDownloader=new WebDownloader();
        webDownloader.downloader(url,name);
        System.out.println("下載檔名為:"+name);
    }

    public static void main(String[] args) {
        //url是 網頁上圖片的路徑
        TestThreadPK t1=new TestThreadPK("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2771978851,2906984932&fm=26&gp=0.jpg","1.jpg");
        TestThreadPK t2=new TestThreadPK("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2583035764,1571388243&fm=26&gp=0.jpg","2.jpg");
        TestThreadPK t3=new TestThreadPK("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1280325423,1024589167&fm=26&gp=0.jpg","3.jpg");

        t1.start();
        t2.start();
        t3.start();

    }

}

//下載器
class WebDownloader{
    //下載方法
    public void downloader(String url,String name){
        try {
            FileUtils.copyURLToFile(new URL(url),new File(name));
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("IO異常,downloader方法出現異常");
        }
    }
}

相關文章