`
jveqi
  • 浏览: 312754 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

synchronized测试

 
阅读更多

1、现有一个简单类UserVo,有两个打印方法。

package main.java.com.ji.test;

public class UserVo {

	private String name;
	private int age;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	public synchronized void printName() {
		System.out.println("name ....in  ....");
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("name .... = ");
	}

	
	public synchronized void printAge() {
		System.out.println("age .... in  ....");
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("age .... = ");
	}
}

 另写了一个测试类

 

 

package main.java.com.ji.test;

public class MyThread implements Runnable {

	private UserVo userVo;
	
	public MyThread(UserVo userVo) {
		this.userVo = userVo;
	}
	@Override
	public void run() {
		userVo.printName();
	}

	
	
	public static void main(String[] args) {
		UserVo userVo = new UserVo();
		userVo.setAge(99);
		userVo.setName("admin....xxx");

		UserVo userVo2 = new UserVo();
		userVo2.setAge(99222);
		userVo2.setName("222admin....xxx");
		for (int i = 0; i < 10; i++) {
			new Thread(new MyThread(userVo)).start();
			new Thread(new MyThreadAge(userVo)).start();
		}
	}
}

class MyThreadAge implements Runnable {

	private UserVo userVo;
	
	public MyThreadAge(UserVo userVo) {
		this.userVo = userVo;
	}
	@Override
	public void run() {
		userVo.printAge();
	}
}

 

 

2、如果想执行

for (int i = 0; i < 10; i++) {
			new Thread(new MyThread(userVo)).start();
			new Thread(new MyThreadAge(userVo)).start();
		}

 循环的时候,每个单独的printName和printAge不被打断的话,两个方法前需加关键字synchronized

 

3、、如果想执行

for (int i = 0; i < 10; i++) {
			new Thread(new MyThread(userVo)).start();
			new Thread(new MyThreadAge(userVo2)).start();
		}

 循环的时候,每个单独的printName和printAge不被打断的话,两个方法前需加关键字 static synchronized

 

分享到:
评论
1 楼 bozch 2017-09-22  
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

相关推荐

    Android synchronized 测试案例

    synchronized 测试案例,同步一个对象或者多个对象的案例均有,还有成功和失败案例的对比

    java synchronized demo

    测试java中synchronized到底锁住了什么,完整demo

    Synchronized 终极说明教程

    Synchronized 终极说明教程 完整调试 所有情况下的线程处理。

    synchronized枷锁实例

    基于Synchronized加锁的四个demo,主要反映类锁、对象锁、方法锁的使用方法。 并测试不同类型锁之间的有效关系。

    线程安全测试类

    针对synchronized同步代码块中,使用的锁进行一些测试。如果以某类的成员变量所谓锁,可以让线程同步吗?答案是可以的。 测试代码展示了线程同步和线程执行顺序 的区别。

    Synchronized Radar ECG Data.zip

    测试文件夹包含来自受试者6的长度为1024个样本的200个同步EEG和解调雷达信号段。 所有段都以MAT格式存储。 文件名GDN000N_S_M_K.mat对应于M类型的第K段信号。M可以是ECG或雷达。N对应于受试者编号(1-6)。S对应于...

    Synchronized与Lock

    NULL 博文链接:https://lf6627926.iteye.com/blog/1328598

    java多线程自增效率比较及原理解析

    测试表明,LongAdder的效率最高,LongAccumulator次之,AtomicInteger再次之,synchronized最慢。同时,本文也对这些方法的原理进行了简单解析,如synchronized关键字的互斥锁机制、AtomicInteger的CAS机制、...

    从青铜到王者的路线来聊聊Synchronized的底层实现原理

    2.3 测试上下文切换次数 2.4 Java内存模型 2.5 主内存与工作内存之间的数据交互过程 三、秩序白银 3.1 多线程带来的可见性问题 3.2 多线程带来的原子性问题 3.3 多线程带来的有序性问题 四、荣耀黄金 4.1 sync可...

    蓝桥杯leetcode-JavaBase:Java一些类测试用例

    synchronized 和 lock 的用法 11. Thread Thread创建、ThreadLocal用法、Deamon守护线程 CountDownLatch和CyclicBarrier区别 12. LanQiao 蓝桥杯的测试 13. LeetCode 在LeetCode刷的题 14. Test 一些偶尔的测试

    java线程安图分析(含测试代码)

    目录: 基础概念 造成线程不安全的条件 变量种类与线程安全 如何避免线程不安全 synchronized关键字使用和原理 jdk多线程并发包 THREADLOCAL 测试工程

    java多线程中测试同步的小程序

    这是我做的一个很简单的多线程同步程序,目的是为了测试多线程编程下如何使用同步(synchronized)防止产生竞争共享资源的错误状态,从中得到的心得是:一定要将你所共享的变量封装在一个类中,将所有有关该变量的...

    SENSE:感觉

    Python(经过Python3.6.10测试) PyTorch(经过1.3.0测试) SynchronizedBatchNorm(从借用) 张量板 tqdm OpenCV 科学的 麻木 强烈建议使用conda环境安装所有依赖项。 只需运行sh scripts/install.sh即可安装...

    Syncs - synchronized web presentations-crx插件

    同时浏览多个基于浏览器的演示文稿 ...Syncs已通过最受欢迎的幻灯片工具进行了测试,例如:* Reveal.js * Prezi * Slides.com * Webslides * JessyInk * Impress.js * Deck.js * Bespoke.js 支持语言:English

    Java测试题2答案

    《Java测试题2》 &lt;br&gt;一、 选择 1.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的 ? B A ArrayList myList=new Object(); B List myList=new ArrayList(); C ...

    Java-并发(Concurrent)编程

    资源概要:1,多线程;2,synchronized;3,volatile;4,多线程在JVM中的实现原理剖析 导语: 什么是多线程? 多线程(multithreading)是指从软件或者硬件上实现多个线程并发执行的...线程池案例-Web容器-压力测试

    面向测试任务的交换机结构设计 (2008年)

    针对现有交换机不能满足网络化测试应用实时性要求的问题,以及目前网络闭环时间传递方法存在的缺点与不足,设计了一种具有时间传递、时间检测、时钟再生功能的同步介质访问控制器 (SMAC, Synchronized Medium Access ...

    ideaworker.zip

    博主的多线程文章的测试类-线程创建以及线程控制器 内含创建线程、synchronized、ReentrantLock、ReadWriteLock、CAS、四种引用、并发控制器、volatile

    TestSyncMethods.java

    我们写同步的时候,优先考虑synchronized,如果有特殊需要,再进一步优化。ReentrantLock和Atomic如果用的不好,不仅不能提高性能,测试代码

    Java SE实践教程 源代码 下载

    第5章 如何走得更稳——测试驱动的基本概念 91 5.1 讲解 92 5.1.1 什么是JUnit 92 5.1.2 使用JUnit的一般过程 92 5.1.3 安装JUnit 93 5.2 编写单元测试 93 5.2.1 第1个单元测试 93 5.3 编写单元测试的步骤 95...

Global site tag (gtag.js) - Google Analytics