测试多个线程调用同一静态方法(无静态变量)时是否有线程安全问题
来源:互联网 发布:spss 23 for mac 破解 编辑:程序博客网 时间:2024/06/07 01:29
思路:
使用两个线程调用同一静态方法(该静态方法不引用静态变量)、第一个线程被阻塞的时间大于第二个线程被阻塞的时间,若第一个线程与第二个线程的输出结果相同,则两个线程调用同一静态方法存在线程安全问题,若第一个线程于第二个线程的输出结果不同,则两个线程调用同一静态方法不存在线程安全问题;
package com.shawearn.test;/** * 测试多个线程调用同一静态方法(无静态变量)时是否有线程安全问题; * * @author Shawearn * */public class TestThreadSafe {public static void main(String[] args) {// 创建第一个线程,该线程调用 test 方法时会被阻塞 3000 毫秒;new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubtest(1, 1, 3000L);}}).start();// 创建第二个线程,该线程在调用 test 方法时会被阻塞 1000 毫秒;new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubtest(2, 2, 1000L);}}).start();}/** * 测试方法; * * @param num 传入的数字; * @param callCount 当前方法被调用的次数; * @param sleepTime 当前方法运行时的阻塞时间,单位为毫秒; */public static void test(int num, int callCount, long sleepTime) {long nowTime = System.currentTimeMillis();int result = 0;try {result = num;Thread.sleep(sleepTime);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("[" + nowTime + "] 第 " + callCount + " 次调用 result : " + result);}}
第一次运行结果:
[1476725904385] 第 2 次调用 result : 2[1476725904385] 第 1 次调用 result : 1
第二次运行结果:
[1476725950310] 第 2 次调用 result : 2[1476725950310] 第 1 次调用 result : 1
第三次运行结果:
[1476725998017] 第 2 次调用 result : 2[1476725998017] 第 1 次调用 result : 1
实验结论:
两个线程调用同一静态方法(该静态方法不引用静态变量)不存在线程安全问题;
0 0
- 测试多个线程调用同一静态方法(无静态变量)时是否有线程安全问题
- 在多线程中使用静态方法是否有线程安全问题
- 在多线程中使用静态方法是否有线程安全问题
- 多线程中使用静态方法是否有线程安全问题
- 在多线程中使用静态方法是否有线程安全问题
- 在多线程中使用静态方法是否有线程安全问题
- C#静态变量和静态方法的线程安全问题
- 多个线程调用静态方法,是否会出现并发问题?
- java静态方法之线程安全问题
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java 线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量 .
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- Person Follower
- ovs的upcall及ofproto-dpif处理细节
- 读书笔记:C++ primer 5th edition--chapter17.标准库特殊设施
- meta标签设置
- PHP.9-HTML+CSS(三)-CSS样式
- 测试多个线程调用同一静态方法(无静态变量)时是否有线程安全问题
- 2016/10/18
- 记录学习java的历程
- SlideMenu实现沉浸式效果
- 插入排序
- AC自动机 多模式串匹配 模板
- 6. Java方法重载
- 区块链运行机制简介
- STM32串口环形缓冲区