java 如何使用多線程調用類的靜態方法?


1.情景展示

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

  如何通過多線程實現?

2.分析

  之所以采用多線程,是為了節省時間 

3.解決方案

  准備工作

  logo文件  

  將生成的文件保存在F盤test目錄下

  代碼實現

/**
 * 多線程測試類
 * @explain 生成圖片格式的二維碼采用多線程實現
 * @author Marydon
 * @creationTime 2018年11月23日下午3:15:39
 * @version 1.0
 * @since
 * @email marydon20170307@163.com
 */
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是線程安全的,即對任何方法(包括靜態方法)都可以不考慮線程沖突,但有一個前提,就是不能存在全局變量。如果存在全局變量,則需要使用同步機制。   

 

寫在最后

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

 相關推薦:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM