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
相关推荐
synchronized 测试案例,同步一个对象或者多个对象的案例均有,还有成功和失败案例的对比
测试java中synchronized到底锁住了什么,完整demo
Synchronized 终极说明教程 完整调试 所有情况下的线程处理。
基于Synchronized加锁的四个demo,主要反映类锁、对象锁、方法锁的使用方法。 并测试不同类型锁之间的有效关系。
针对synchronized同步代码块中,使用的锁进行一些测试。如果以某类的成员变量所谓锁,可以让线程同步吗?答案是可以的。 测试代码展示了线程同步和线程执行顺序 的区别。
测试文件夹包含来自受试者6的长度为1024个样本的200个同步EEG和解调雷达信号段。 所有段都以MAT格式存储。 文件名GDN000N_S_M_K.mat对应于M类型的第K段信号。M可以是ECG或雷达。N对应于受试者编号(1-6)。S对应于...
NULL 博文链接:https://lf6627926.iteye.com/blog/1328598
测试表明,LongAdder的效率最高,LongAccumulator次之,AtomicInteger再次之,synchronized最慢。同时,本文也对这些方法的原理进行了简单解析,如synchronized关键字的互斥锁机制、AtomicInteger的CAS机制、...
2.3 测试上下文切换次数 2.4 Java内存模型 2.5 主内存与工作内存之间的数据交互过程 三、秩序白银 3.1 多线程带来的可见性问题 3.2 多线程带来的原子性问题 3.3 多线程带来的有序性问题 四、荣耀黄金 4.1 sync可...
synchronized 和 lock 的用法 11. Thread Thread创建、ThreadLocal用法、Deamon守护线程 CountDownLatch和CyclicBarrier区别 12. LanQiao 蓝桥杯的测试 13. LeetCode 在LeetCode刷的题 14. Test 一些偶尔的测试
目录: 基础概念 造成线程不安全的条件 变量种类与线程安全 如何避免线程不安全 synchronized关键字使用和原理 jdk多线程并发包 THREADLOCAL 测试工程
这是我做的一个很简单的多线程同步程序,目的是为了测试多线程编程下如何使用同步(synchronized)防止产生竞争共享资源的错误状态,从中得到的心得是:一定要将你所共享的变量封装在一个类中,将所有有关该变量的...
Python(经过Python3.6.10测试) PyTorch(经过1.3.0测试) SynchronizedBatchNorm(从借用) 张量板 tqdm OpenCV 科学的 麻木 强烈建议使用conda环境安装所有依赖项。 只需运行sh scripts/install.sh即可安装...
同时浏览多个基于浏览器的演示文稿 ...Syncs已通过最受欢迎的幻灯片工具进行了测试,例如:* Reveal.js * Prezi * Slides.com * Webslides * JessyInk * Impress.js * Deck.js * Bespoke.js 支持语言:English
《Java测试题2》 <br>一、 选择 1.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的 ? B A ArrayList myList=new Object(); B List myList=new ArrayList(); C ...
资源概要:1,多线程;2,synchronized;3,volatile;4,多线程在JVM中的实现原理剖析 导语: 什么是多线程? 多线程(multithreading)是指从软件或者硬件上实现多个线程并发执行的...线程池案例-Web容器-压力测试
针对现有交换机不能满足网络化测试应用实时性要求的问题,以及目前网络闭环时间传递方法存在的缺点与不足,设计了一种具有时间传递、时间检测、时钟再生功能的同步介质访问控制器 (SMAC, Synchronized Medium Access ...
博主的多线程文章的测试类-线程创建以及线程控制器 内含创建线程、synchronized、ReentrantLock、ReadWriteLock、CAS、四种引用、并发控制器、volatile
我们写同步的时候,优先考虑synchronized,如果有特殊需要,再进一步优化。ReentrantLock和Atomic如果用的不好,不仅不能提高性能,测试代码
第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...