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是线程安全的,即对任何方法(包括静态方法)都可以不考虑线程冲突,但有一个前提,就是不能存在全局变量。如果存在全局变量,则需要使用同步机制。
java 如何使用多线程调用类的静态方法?的更多相关文章
- Java虚拟机JVM学习04 类的初始化
Java虚拟机JVM学习04 类的初始化 类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值. 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始 ...
- java 27 - 1 反射之 类的加载器
说到反射,首先说类的加载器. 类的加载: 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载: 就是指将class文件读入内存,并为之 ...
- Java之面向对象概述,类,构造方法,static,主方法,对象
一.面向对象概述 面向过程 "面向过程"(Procedure Oriented)是一种以过程为中心的编程思想.这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响 ...
- Android 通过 JNI 访问 Java 字段和方法调用
在前面的两篇文章中,介绍了 Android 通过 JNI 进行基础类型.字符串和数组的相关操作,并描述了 Java 和 Native 在类型和签名之间的转换关系. 有了之前那些基础,就可以实现 Jav ...
- java多线程并发去调用一个类的静态方法安全性探讨
java多线程并发去调用一个类的静态方法安全性探讨 转自:http://blog.csdn.net/weibin_6388/article/details/50750035 这篇文章主要讲多线程对 ...
- [转]java多线程并发去调用一个类的静态方法安全性探讨
文章转自:https://blog.csdn.net/weibin_6388/article/details/50750035 这篇文章主要讲多线程对静态方法访问的数据安全性 总结如下: 1,java ...
- Thymeleaf常用语法:模板文件中表达式调用Java类的静态方法
在模板文件的表达式中,可以使用“${T(全限定类名).方法名(参数)}”这种格式来调用Java类的静态方法. 开发环境:IntelliJ IDEA 2019.2.2Spring Boot版本:2.1. ...
- Java多线程——ThreadLocal类
一.概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量).也许把它命名 ...
- Java动态调用类中方法
在Java中,调用类的方法有两种方式:对于静态方法可以直接使用类名调用,对于非静态方法必须使用类的对象调用.反射机制提供了比较另类的调用方式,可以根据需要指定要调用的方法,而不必在编程时确定.调用的方 ...
随机推荐
- 自动移动的ImageView
图片会慢慢的向左移动,到头了后,再循环 其实这个效果和屏幕背景图片的效果差不多,屏幕背景图是随着滑动来慢慢的滚动,这是自己每个n秒开始动.实现方式自然是用自定的控件了.这次继承的是ImageView ...
- PHP检测及判断手机登录用户是安卓或爱疯(iPhone)客户端
<?php /* PHP 自动判断客户端平台(PC.安卓.iPhone.平板) * strtolower() 函数把字符串转换为小写: * strpos() 函数返回字符串在另一个字符串中第一次 ...
- Android日志监听工具logcat命令详解(转)
Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用. 在使用logcat之前,请确保手机的USB调试 ...
- 深入理解多线程(三)—— Java的对象头
上一篇文章中我们从HotSpot的源码入手,介绍了Java的对象模型.这一篇文章在上一篇文章的基础上再来介绍一下Java的对象头.主要介绍一下对象头的作用,结构以及他和锁的关系. Java对象模型回顾 ...
- 如何在windows2003(IIS6)下配置IIS,使其支持cshtml
在开发环境机器上,安装WEB PAGES 后,会在 C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages 的下产生DLL 其中 Micr ...
- mysql权限管理命令示例
mysql权限管理命令示例 grant all privileges on *.* to *.* identified by 'hwalk1'; flush privileges; insert in ...
- codevs 2190 有理逼近
2190 有理逼近 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 对于一个素数P,我们可以用一系列有理分数(分子.分母都是 ...
- [leetcode]Plus One @ Python
原题地址:https://oj.leetcode.com/problems/plus-one/ 题意: Given a non-negative number represented as an ar ...
- 在Cygwin里,如何进入到C盘?
答: cd /cygdrive/c 来源: How to navigate to a directory in C:\ with Cygwin? https://stackoverflow.com/q ...
- zTree怎么判断树有节点展开或者完全关闭的
树节点有个open属性,引用API: 记录 treeNode 节点的 展开 / 折叠 状态.1.初始化节点数据时,如果设定 treeNode.open = true,则会直接展开此节点2.叶子节点 t ...