首页 > 编程语言 >java 如何使用多线程调用类的静态方法?

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

时间:2023-03-01 18:33:00浏览次数:36  
标签:java String threadName 二维码 线程 静态方法 100 多线程

 

1.情景展示

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

  如何通过多线程实现?

2.分析

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

3.解决方案

  准备工作

  logo文件  

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

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

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

  代码实现

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


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

 

写在最后

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


作者:​​Marydon​​



标签:java,String,threadName,二维码,线程,静态方法,100,多线程
From: https://blog.51cto.com/u_15964717/6093991

相关文章

  • java LinkedList 源码
    概述底层数据结构是双向链表(jdk1.6是双向循环,1.7开始不循环了),所以新增/删除效率高,查询/修改效率相对较低全能冠军:既是一个顺序容器,也是队列,还可以作为栈使用未实现Ran......
  • JAVAWEB-NOTE05-Maven
    目录概述提供了一套标准的项目化结构提供了一套标准化的构建流程提供了一套依赖管理机制简介安装配置安装基本使用常用命令生命周期IDEA配置Maven配置环境Maven坐标IDEA新......
  • java base64编码、解码的三种方式
    1.用法介绍方式一:DatatypeConverter使用jdk自带的DatatypeConverter.java类实现,但是jdk版本必须>=1.6。importjava.io.UnsupportedEncodingException;importjavax.xml.bin......
  • java AES加密、解密(兼容windows和linux)
     1.准备工作2018年10月24日10点46分importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKe......
  • java List 源码
    概述底层通过数组实现,所以查询/更新效率很高,删除/增加跟位置相关,除未实现同步外和Vector大致相同扩容publicbooleanadd(Ee){//数组扩容,不是一定要扩容,需要......
  • 一个多线程爬取http://www.infobank.cn的爬虫
    importrequestsfrombs4importBeautifulSoupimportreimportopenpyxlfrommultiprocessing.dummyimportPoolimporttimeimportos#从输入表格获取数据defread_exce......
  • 多线程和多进程的区别
    一个线程从属于一个进程;一个进程可以包含多个线程。一个线程挂掉,对应的进程挂掉,多线程也挂掉;一个进程挂掉,不影响其它进程,多进程稳定。进程系统开销显著大于线程开销;线程......
  • 算法刷题-计算日期到天数转换-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • Java应用【十】使用Mockito进行模拟和测试桩
    如果您觉得本博客的内容对您有所帮助或启发,请关注我的博客,以便第一时间获取最新技术文章和教程。同时,也欢迎您在评论区留言,分享想法和建议。谢谢支持!相关阅读:​​Java应用【......
  • Java操作Excel之EasyExcel、标题、背景色设置
    首先不管是学习或者是了解什么技术都要先去看下官方文档https://alibaba-easyexcel.github.io/index.html原文地址 https://www.cnblogs.com/zhangsan-plus/p/16503278.h......