1.对于锁参数对象,只有参数对象是同一个对象时才会锁,不同的对象不会锁;
2.锁当前类对象,所有调用该类对象的情况下都会进行锁操作
总结的不好,可能理解不了,直接看代码和执行结果
锁参数对象: public class TestThread { public static void main(String[] args) { T2 t2 = new T2(); new T(t2,"lxl0").start(); new T(t2,"lxl0").start(); new T(t2,"lxl2").start(); new T(t2,"lxl3").start(); } } class T extends Thread { T2 t2; String userId; public T(T2 t2,String userId){ this.t2 = t2; this.userId = userId; } public void run() { t2.m(userId); } } class T2{ public void m(String userId) { System.out.println("m................"); synchronized (userId) { try { System.out.println("userId:" + userId); Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } } } ----------------------------------------------- 执行结果: m................ userId:lxl0 m................ m................ userId:lxl2 m................ userId:lxl3 userId:lxl0
2.锁类对象
锁类对象: public class TestThread { public static void main(String[] args) { T2 t2 = new T2(); new T(t2,"lxl0").start(); new T(t2,"lxl0").start(); new T(t2,"lxl2").start(); new T(t2,"lxl3").start(); } } class T extends Thread { T2 t2; String userId; public T(T2 t2,String userId){ this.t2 = t2; this.userId = userId; } public void run() { t2.m(userId); } } class T2{ public void m(String userId) { System.out.println("m................"); synchronized (this) { try { System.out.println("userId:" + userId); Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } } } ----------------------------- 执行结果: m................ userId:lxl0 m................ m................ m................ userId:lxl3 userId:lxl2 userId:lxl0
相关推荐
synchronized关键字”锁”的实现本质 synchronized关键字实现的锁是依赖于JVM的,...上面这段代码,synchronized锁的其实是 o 这个对象,不是{}里面的代码块,synchronized (o)加锁的过程可以理解为,通过改变o这个对
主要介绍了Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别,希望对大家有所帮助,一起跟随小编过来看看吧
46、谈谈对Synchronized关键字,类锁,方法锁,重入锁的理解 49、synchronized 和volatile 关键字的区别 51-58题 51、ReentrantLock 、synchronized和volatile比较 53、死锁的四个必要条件? 56、什么是线程池...
(15分) 主要相同点: Lock能完成synchronized所实现的所有功能.(其它不重要) 主要不同点: Lock有比synchronized更精确的线程语义和更好的性能(在相同点中回答此点也行) synchronized会自动释放锁....
java中的数组是不是对象 数组初始化的方式有哪几种 length属性和length()方法有什么区别 finally块中的代码什么时候被执行 Java中的异常处理机制的简单原理和应用。 java socket java序列化 JVM加载class文件的原理...
3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...
3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...
5.4.4 Java中对象的创建和使用127 5.5 属性130 5.5.1 属性的定义130 5.5.2 变量131 5.6 方法132 5.6.1 方法的定义132 5.6.2 构造方法135 5.6.4 方法重载138 5.6.5 自定义方法138 5.6.6 系统提供方法139 5.6.7 方法...
对象锁和监视器: 介绍对象锁的概念,解释如何使用 synchronized 关键字来实现对象级别的同步。 线程间通信: 详细讲解多线程之间如何进行通信,包括等待和通知机制、线程间的数据传递等。 死锁和解决: 介绍死锁的...
1.具有扎实的Java基础,对面向对象编程有深刻的理解,熟练掌握java IO流、集合、多线程、反射,泛型,注解,网络编程等基础开发技术; 2.熟练使用常用的java集合类以及常用集合的源码,熟悉多线程以及同步容器以及...
Java 中你可以凭借多态性,通过一个画圆的对象,来创建一个画椭圆或矩形的对象。不管是 画圆,画椭圆还是画矩形的方法,它们都有一个相同的方法名,但以不同的方式完成他们的 画圆的功能。 1.8 类和对象 1.8.1 ...
3、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 56 4、线程的基本概念 57 5、什么是多线程 57 6、程序、进程、线程之间的关系 57 7、创建线程有几种方式,分别是什么? ...
, 这里,读者将通过使用java.lang.thread类、synchronized和volatile关键字,以及wait、notify和notifyall方法,学习如何初始化、控制和协调并发操作。此外,本书还提供了有关并发编程的全方位的详细内容,例如限制...
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在...
java.util.concurrent包、synchronized关键字、Swing框架、Java内存模型等内容也均有涉及,不仅能够了解Java多线程的相关知识,还可加深对Java语言的理解。 本书适合以下读者阅读 a.对多线程感兴趣的人 b.对Java...
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在...
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在...
答:JDO是java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。 CORBA? 答:CORBA标准是公共对象请求代理结构,用途为:用不同的程序设计语言书写,在不同的...