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是線程安全的,即對任何方法(包括靜態方法)都可以不考慮線程沖突,但有一個前提,就是不能存在全局變量。如果存在全局變量,則需要使用同步機制。
