欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-19 13:36:58
本文实例为大家分享了java利用同步块synchronized()保证并发安全的具体代码,供大家参考,具体内容如下 package day10; /**...

本文实例为大家分享了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利用同步块synchronized()保证并发安全详解整合,希望对大家有所帮助

上一篇:

下一篇: