欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

详解Java利用同步块synchronized()保证并发安全

时间:2021-08-17 07:34:35|栏目:JAVA代码|点击:

本文实例为大家分享了Java利用同步块synchronized()保证并发安全的具体代码,供大家参考,具体内容如下

package day10;
/**
 * 同步块
 * 有效地缩小同步范围
 * 可以在保证并发安全的同时尽可能提高并发效率
 * 
 * 实例:模拟两个人同时进店买衣服,为提高效率
 * 	     只在试衣服阶段进行同步排队过程,其他阶段无需排队。
 * @author kaixu
 *
 */
public class SyncDemo2 {

	public static void main(String[] args) {
	shop shop = new shop();
	Thread t1 = new Thread(){
		public void run() {
			shop.buy();
		}
	};
	Thread t2 = new Thread(){
		public void run() {
			shop.buy();
		}
	};
	t1.start();
	t2.start();
	}
}
class shop{
	public void buy(){
		//获取运行buy方法的线程
		Thread t = Thread.currentThread();
		try{
			System.out.println(t.getName()+":正在挑衣服...");
			Thread.sleep(5000);
			/**
			 * 同步块可以要求多个线程对该块内的代码排队执行
			 * 但是前提条件是同步监视器对象(即上锁的对象)
			 * 要求多个线程看到的必须是同一个。
			 * synchronized(同步监视器对象){
			 * 		需要同步的代码
			 * }
			 * 所谓同步执行即:多个线程必须排队执行
			 * 所谓异步执行即:多个线程可以同时执行
			 */
			synchronized (this) {
				System.out.println(t.getName()+":正在试衣服...");
				Thread.sleep(5000);
			}
			System.out.println(t.getName()+":结账离开。");
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
}

上一篇:JAVA获取当前项目和文件所在路径的实例代码

栏    目:JAVA代码

下一篇:浅谈springcloud常用依赖和配置

本文标题:详解Java利用同步块synchronized()保证并发安全

本文地址:http://www.codeinn.net/misctech/167645.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有