`

Lock

阅读更多
Lock

一、

1.


public class ThreadSynchronizedDemo {

	public static String name = "zhang" ;
	public static Integer age = 25 ;
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {

		/**
		 * 预期输出:
		 * zhang : 25 
		 * li    : 24
		 * 实际输出:
		 * 各种组合,
		 * 原因:
		 * 线程的执行时无序的,谁先执行取决于谁先占用CPU
		 * 即,可能出现   先printDemo 打印一般的时候,ChangeDemo 生效修改了 其他的值
		 */
		new Thread(new PrintDemo()).start();
		new Thread(new ChangeDemo()).start();
	}

}

class PrintDemo implements Runnable{

	@Override
	public void run() {
		while(true){
			System.out.println("name:"+ThreadSynchronizedDemo.name+" age:"+ThreadSynchronizedDemo.age);
		}
	}
	
}

class ChangeDemo implements Runnable{

	@Override
	public void run() {
		while(true){
			if("zhang".equals(ThreadSynchronizedDemo.name)){
				ThreadSynchronizedDemo.name = "li";
				ThreadSynchronizedDemo.age = 24 ;
			}else{
				ThreadSynchronizedDemo.name = "zhang" ;
				ThreadSynchronizedDemo.age = 25 ;
			}
		}
	}
	
}


2.

public class ThreadSynchronizedDemo {

	public static String name = "zhang" ;
	public static Integer age = 25 ;
	
	public static void main(String[] args) {

		/**
		 * Synchronized:
		 * 代码块锁机制
		 * 1.锁加在哪:欲同步的位置
		 * 2.锁对象:
		 * 共享的资源/类的字节码 class / 某一不变的对象 private static final Object object
		 */
		new Thread(new PrintDemo()).start();
		new Thread(new ChangeDemo()).start();
	}

}

class PrintDemo implements Runnable{

	@Override
	public void run() {
		while(true){
			synchronized (ThreadSynchronizedDemo.class) {
				System.out.println("name:"+ThreadSynchronizedDemo.name+" age:"+ThreadSynchronizedDemo.age);
			}
		}
	}
	
}

class ChangeDemo implements Runnable{

	@Override
	public void run() {
		synchronized (ThreadSynchronizedDemo.class) {
			while(true){
				if("zhang".equals(ThreadSynchronizedDemo.name)){
					ThreadSynchronizedDemo.name = "li";
					ThreadSynchronizedDemo.age = 24 ;
				}else{
					ThreadSynchronizedDemo.name = "zhang" ;
					ThreadSynchronizedDemo.age = 25 ;
				}
			}
		}
	}
	
}
分享到:
评论

相关推荐

    AHK-CapsLock修改为回车-左手快捷键.ahk

    关键字-回车映射-ahk回车映射-左手回车 ;;快捷键x说明 上下左右 ... CapsLock+q 箭头上--防止误触屏-CapsLock+q也映射为箭头上 ;; CapsLock+e 删除键-删除前面的-Backspace ;; CapsLock+r 删除键-删除后面的--Del

    Lock-in Amplifier.pdf

    significance of a lock-in amplifier. As an introduction to the subject there follows a simple intuitive account biased towards light measurement applications. All lock-in amplifiers, whether ...

    Android powermanger wakelock

    Android 电源管理 -- wakelock机制,通过控制wakelock 实现保持pad 禁止休眠状态; Wake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠, 可以被用户态程序和内核获得. 这个锁可以是有超时的 或者 是...

    redisson lock和tryLock 分布式锁简单练习

    redisson lock和tryLock 分布式锁简单练习

    Active Lock U盘登录锁3.0破解版(U盘当电脑锁专业版支持win7)

    Active Lock可以将任何一款普通的U盘变成您的Windows登录钥匙。 启用Active Lock后,用户需要插入USB钥匙盘才能登录Windows操作系统,拔出U盘时自动锁住电脑。Active Lock采用Windows登录验证接口,支持Windows 2000...

    彻底搞清楚library cache lock的成因和解决方法

    当出现上述情况的时候,我们可以通过v$session_wait查询等待事件,当然,这种情况下,该session的等待事件一定是'Library cache lock'。 让我们来解释一下, 第一种情况,当会话1(session 1)在对一个表执行DML ...

    JAVA Lock加锁实例

    Lock锁是对象锁,仅在同一对象中,锁才会生效。(不做论证) (以下场景皆为单例模式下运行) lock.lock()的加锁方式,会使后续请求的线程堵塞等待。(方案A) lock.tryLock()的加锁方式,不会堵塞,会立即返回加锁...

    解决git:fatal:Unable to create”…/.git/index.lock” 的错误

    报错大致意思就是创建index.lock文件失败,因为已经存在index.lock文件了. index.lock文件是在.git下面, 而.git是一般是隐藏的, 那么可以通过以下命令删除即可. rm -rf /Users/dianji/project/ccpay.h5/.git/index....

    __lll_mutex_lock_wait的错误原因

    #0 0x00002b9405ea1c38 in __lll_mutex_lock_wait () from /lib64/libc.so.6 #1 0x00002b9405e45e5f in _L_lock_4026 () from /lib64/libc.so.6 #2 0x00002b9405e42df1 in free () from /lib64/libc.so.6 #3 0x00002...

    XUS PC Lock_好用的电脑锁

    XUS PC Lock(电脑图形锁)是一款简单、易用、强大的计算机图形锁定程序,通过设置你自己的解锁图案可防止他人未经允许使用你的计算机。支持3 x 3(9点)、4 x 4(16点)、5 x 5(25点)点阵图形解锁;支持手动锁定、...

    zi_whitepaper_principles_of_lock-in_detection.pdf

    Lock-in amplifiers were invented in the 1930’s [1, 2, 3] and commercialized [4] in the mid 20th century as electrical instruments capable of extracting signal amplitudes and phases in extremely ...

    Lock详解.pdf

    Lock

    folder-lock 7.2.2文件加密软件

    Folder Lock 是一个对所有数据的安全性需求的全套解决方案。它可以让你保持多种方式保护您的个人档案,在PC和便携式硬盘,并提供可选的备份在线存储受保护的文件 。Folder Lock 7安全工具的完美结合,让您加密备份您...

    Lock SELinux forced mode.zip

    Lock SELinux forced mode.zip

    获去CapsLock键的状态

    判断CapsLock键有没有打开 判断CapsLock键有没有打开 判断CapsLock键有没有打开

    File Lock v6.0.11 汉化版

    File Lock 是一款安全软件,可以锁定/隐藏文件、文件夹和磁盘。它能够阻止访问任何的文件、文件夹和磁盘。File Lock 也支持隐藏文件和文件夹,以使它们完全不可见。锁定的条目将拒绝访问、移动和删除,隐藏的条目将...

    实现yarnlock与packagelockjson相互转换

    实现yarn.lock与package-lock.json相互转换

    创建SP_WHO_LOCK死锁信息临时表然后执行 exec sp_who_lock.SQL

    创建SP_WHO_LOCK死锁信息临时表,查询数据库死锁信息,方便解决数据库锁库问题。

    Folder lock v7.7.6.zip

    今天小编要给大家介绍一款专业的文件加密软件——Folder Lock 。Folder Lock 能用密码将您的任何文件、文件夹、驱动器和图片快速进行安全加密,加密速度飞快,被加密的文件不但是隐藏的,而且是无法删除的,软件使用...

    判断Caps Lock键是否开/关

    判断Caps Lock键是否开/关

Global site tag (gtag.js) - Google Analytics