详解Java利用同步块synchronized()保证并发安全
本文实例为大家分享了Java利用同步块synchronized()保证并发安全的具体代码,供大家参考,具体内容如下
packageday10; /** *同步块 *有效地缩小同步范围 *可以在保证并发安全的同时尽可能提高并发效率 * *实例:模拟两个人同时进店买衣服,为提高效率 * 只在试衣服阶段进行同步排队过程,其他阶段无需排队。 *@authorkaixu * */ publicclassSyncDemo2{ publicstaticvoidmain(String[]args){ shopshop=newshop(); Threadt1=newThread(){ publicvoidrun(){ shop.buy(); } }; Threadt2=newThread(){ publicvoidrun(){ shop.buy(); } }; t1.start(); t2.start(); } } classshop{ publicvoidbuy(){ //获取运行buy方法的线程 Threadt=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(Exceptione){ e.printStackTrace(); } } }
以上所述是小编给大家介绍的Java利用同步块synchronized()保证并发安全详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!