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

 

写在最后

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

 相关推荐:

 

posted @ 2018-11-23 18:11  Marydon  阅读(3125)  评论(0编辑  收藏  举报