java 如何使用多线程调用类的静态方法?

时间:2023-03-09 18:28:01
java 如何使用多线程调用类的静态方法?

1.情景展示

  静态方法内部实现:将指定内容生成图片格式的二维码;

  如何通过多线程实现?

2.分析

  之所以采用多线程,是为了节省时间

3.解决方案

  准备工作

  logo文件 

java 如何使用多线程调用类的静态方法?

  将生成的文件保存在F盘test目录下

java 如何使用多线程调用类的静态方法?

  代码实现

/**
* 多线程测试类
* @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 如何使用多线程调用类的静态方法?

  效果展示

java 如何使用多线程调用类的静态方法?

  说明:java是线程安全的,即对任何方法(包括静态方法)都可以不考虑线程冲突,但有一个前提,就是不能存在全局变量。如果存在全局变量,则需要使用同步机制。  

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

相关推荐: