java 如何使用多執行緒呼叫類的靜態方法?
阿新 • • 發佈:2018-11-23
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是執行緒安全的,即對任何方法(包括靜態方法)都可以不考慮執行緒衝突,但有一個前提,就是不能存在全域性變數。如果存在全域性變數,則需要使用同步機制。
寫在最後
哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!
相關推薦: