`
jveqi
  • 浏览: 321760 次
  • 性别: 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`的使用方法,包括同步单个对象、同步多个对象以及成功与失败的场景对比。 一、`synchronized`关键字的基本概念 `synchronized`关键字可以修饰方法或用作代码块,其主要作用是...

    Synchronized 终极说明教程

    在实际开发中,我们可以通过编写测试示例来验证`synchronized`的效果。例如,我们可以创建两个线程,一个线程负责加一操作,另一个线程负责减一操作,通过`synchronized`控制并发执行的顺序,确保结果的正确性。 五...

    [JAVA][synchronized的使用]

    通常,我们可以通过编写测试类`TestSynchronized`来实践`synchronized`的使用。例如,创建两个线程,分别访问一个共享的`synchronized`方法,观察其执行顺序和结果,以此验证同步的效果。 总结,`synchronized`是...

    java synchronized demo

    通常,`GenerateCode.java`会定义包含`synchronized`的关键类或方法,而`SynchronizedTest.java`会创建多个线程来测试并发访问,观察`synchronized`的效果。 总结,`java synchronized demo`是一个关于如何在Java中...

    第15讲 synchronized和ReentrantLock有什么区别呢?1

    面试中,考察对synchronized和ReentrantLock的理解通常是测试候选人并发编程基础的关键点。除了了解基本使用和案例外,深入理解它们的底层实现,如锁膨胀、降级,以及轻量级锁、重量级锁、自旋锁和偏斜锁等概念,...

    Synchronized与ThreadLocal

    3. **测试运行:** ```java public static void main(String[] args) { CounterThread t1 = new CounterThread(1); CounterThread t2 = new CounterThread(2); t1.start(); t2.start(); } ``` 通过以上案例...

    生产者消费者Java—synchronized 机制

    7. **项目结构**:根据描述,这是一个完整的工程项目,因此除了核心的生产者消费者逻辑,还可能包含测试类(如`07_12_Test3`),配置文件,以及可能的Maven或Gradle构建文件等。 总的来说,这个项目提供了一个学习...

    Synchronized与Lock

    "Synchronized与Lock"这个主题探讨了两种主要的同步机制:synchronized关键字和Lock接口(包括其实现类如ReentrantLock)。这两种机制都用于实现线程间的互斥访问,但它们在功能、灵活性和性能上有所差异。 首先,...

    Lock接口与synchronized关键字

    ### Lock接口与synchronized关键字详解 #### 一、概述 在Java并发编程中,Lock接口与synchronized关键字都是实现同步的重要工具。...- 对于性能敏感的场景,应考虑实际测试不同同步机制的表现,以便做出最佳选择。

    线程安全测试类

    本测试主要关注`synchronized`关键字的使用,以及它如何影响线程同步和线程执行顺序。 `synchronized`关键字是Java中用于实现线程同步的关键机制,它确保同一时间只有一个线程可以执行特定的代码块或方法。当一个...

    java synchronized关键字原理、自定义一把锁来实现同步等

    #### 四、自定义锁测试 为了验证自定义锁的效果,我们可以创建多个线程同时尝试获取锁,并观察其行为。 ```java public class LockTest { private static final ShadowLock lock = new ShadowLock(); public ...

    C++ JAVA 软件测试面试题汇总

    - **多线程**:Java提供了丰富的并发工具,如Thread类、Runnable接口、synchronized关键字、volatile变量和java.util.concurrent包。 - **集合框架**:ArrayList、LinkedList、HashMap、HashSet等是Java编程的基础...

    Synchronized Phasor Measurements Applications User Guide

    - **文件管理**:包括打开干扰文件或打开应力测试文件等操作。 以上内容概述了Synchronized Phasor Measurements (SPM) 应用程序用户指南的主要知识点,这些信息对于理解和应用SPM技术具有重要意义。

    C、C 、Java及软件测试的笔试、面试题

    5. 多线程编程,包括同步机制(synchronized关键字、wait/notify)。 6. 文件和I/O流操作,以及NIO(非阻塞I/O)的概念。 7. Java反射机制和泛型的理解。 软件测试是确保产品质量的关键环节,面试可能关注: 1. ...

    快手2019秋招笔试试题-测试A试卷

    3. **多线程**:了解线程的概念,掌握Thread类和Runnable接口,知道同步机制(synchronized关键字,wait/notify机制,Lock接口等)以及并发工具类如ExecutorService、Semaphore、CountDownLatch等。 4. **Java测试...

    软件测试面试宝典

    - **多线程**:了解并发编程,掌握synchronized、volatile等关键字。 9. **面试技巧** - **自我介绍**:突出个人优势,展现项目经验。 - **问题解答**:清晰、有逻辑地回答问题,展示问题解决能力。 - **沟通...

    Java synchronized那点事.doc

    文档中提供了两个测试方法,展示了在创建锁对象前后是否进行休眠4秒对偏向锁的影响。如果没有休眠,对象可能直接从无锁状态升级为轻量级锁;如果休眠4秒,对象会被赋予偏向锁。 总结来说,Java synchronized机制是...

    一个简单的Java并发系统动态测试工具.zip

    Java并发系统动态测试工具是一个强大的资源,用于检查和分析多线程程序在运行时的行为。这个工具基于Java语言,能够帮助开发者深入理解并发程序的工作原理,发现并修复潜在的线程安全问题,如竞态条件、死锁和活锁等...

    java 记忆测试系统

    此外,为了确保数据的一致性和安全性,开发者可能使用了同步机制,如synchronized关键字或锁对象。 最后,软件工程的实践也是不容忽视的。良好的代码组织结构、注释和文档,以及遵循设计模式(如单例模式、工厂模式...

Global site tag (gtag.js) - Google Analytics