synchronized同步锁机制
定义锁??的方式一:
package android.java.thread09; public class Test implements Runnable { @Override public void run() { /** * 定义一个锁??,这个锁是Jav内部要去判断用的,属于隐士的 看不到的 * Java内部的实现属于 ??锁机制 */ Object lock = new Object(); synchronized (lock) { /** * 多线程操作共享数据 * 重复执行引发的问题 * ........... */ } } }
定义锁??的方式二:
package android.java.thread09; public class Test2 implements Runnable { @Override public void run() { /** Test2.class 认为是一个锁??,这个锁是Jav内部要去判断用的,属于隐士的 看不到的 * Java内部的实现属于 ??锁机制 */ synchronized (Test2.class) { /** * 多线程操作共享数据 * 重复执行引发的问题 * ........... */ } } }
定义锁??的方式 ...... 还有很多方式
举例:高铁上的厕所:
1.厕所门显示无人,高铁上有五个人,这五个人谁先进去(代表谁被CPU执行了)
synchronized (厕所门显示无人 ??) { // 上厕所任务 ........ }
2.厕所门显示有人,高铁上有五个人,进去了一个人,进去的这个人一旦进去就会把门??上,其他四个人在门外等着,进不去
synchronized (厕所门显示有人 ??) { // 上厕所任务 ........ }
3.进去的哪个人,上完厕所了,锁就打开了,厕所门上显示无人, 其他四个人谁先进去(主要看CPU执行权在哪个线程上执行)
synchronized (厕所门显示无人 ??) { // 上厕所任务 ........ } 上完厕所了,锁就打开??,厕所门上显示无人
synchronized同步代码块利与弊
1.好处是:synchronized同步代码,解决安全问题。
2.坏处是:每次都需要判断synchronized(的??是否 锁住),有点耗性能;
总结:1.完全问题解决, 2.有点耗性能, 当然选择1.完全问题解决
原文地址:https://www.cnblogs.com/android-deli/p/10228298.html
时间: 2024-10-17 08:34:52