当前位置: 移动技术网 > IT编程>开发语言>Java > 详解Java利用同步块synchronized()保证并发安全

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

2019年07月19日  | 移动技术网IT编程  | 我要评论

传说中的小五郎君,龙神少年txt下载,化州功夫头

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网