1. 程式人生 > >java 如何使用多執行緒呼叫類的靜態方法?

java 如何使用多執行緒呼叫類的靜態方法?

 

1.情景展示

  靜態方法內部實現:將指定內容生成圖片格式的二維碼;

  如何通過多執行緒實現?

2.分析

  之所以採用多執行緒,是為了節省時間 

3.解決方案

  準備工作

  logo檔案  

  將生成的檔案儲存在F盤test目錄下

  程式碼實現

/**
 * 多執行緒測試類
 * @explain 生成圖片格式的二維碼採用多執行緒實現
 * @author Marydon
 * @creationTime 2018年11月23日下午3:15:39
 * @version 1.0
 * @since
 * @email 
[email protected]
*/ public class MultiThreadTest implements Runnable { // 私有屬性:執行緒名稱 private String threadName; // 有參構造方法 public MultiThreadTest(String threadName) { this.threadName = threadName; } /** * 執行緒啟動後,將要執行的操作 */ @Override public void run() { // 二維碼內容 String data = ""; // 圖片名稱 String fileName = ""; // 二維碼的logo File logoFile = new File("d:/ewm.jpg"); // 執行緒啟動後,執行100次 for(int i = 0; i < 100; i++) { data = threadName + "Marydon" + i; fileName = threadName + "部落格園" + i; // 生成二維碼 BufferedImage image = QRcodeUtils.createQRCodeWithLogo(data, logoFile); // 建立圖片檔案(二維碼) File qrcodeFile = new File("f:/test/" + fileName + ".jpg"); // 以流的形式寫入到該檔案中 ZxingQrcode.writeToFile(image, qrcodeFile); } System.out.println(threadName + "執行結束!"); } }

  測試:依次啟動100個執行緒,每個執行緒生成100個圖片

public static void main(String[] args) {
    // 依次啟動100個執行緒
    for (int i = 1; i <= 100; i++) {
        new Thread(new MultiThreadTest("執行緒" + i)).start();
    }
}

  執行結果

  效果展示

  說明:java是執行緒安全的,即對任何方法(包括靜態方法)都可以不考慮執行緒衝突,但有一個前提,就是不能存在全域性變數。如果存在全域性變數,則需要使用同步機制。   

 

寫在最後

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦: