时间:2021-05-20
本文实例讲述了Java同步代码块和同步方法。分享给大家供大家参考,具体如下:
一 点睛
所谓原子性:一段代码要么执行,要么不执行,不存在执行一部分被中断的情况。言外之意是这段代码就像原子一样,不可拆分。
同步的含义:多线程在代码执行的关键点上,互通消息,相互协作,共同把任务正确的完成。
同步代码块语法:
synchronized(对象){ 需要同步的代码块;}同步方法语法:
访问控制符 synchronized 返回值类型方法名称(参数){ 需要同步的代码;}二 同步代码块完成卖票功能
1 代码
public class threadSynchronization{ public static void main( String[] args ) { TestThread t = new TestThread(); // 启动了四个线程,实现资源共享 new Thread( t ).start(); new Thread( t ).start(); new Thread( t ).start(); new Thread( t ).start(); }}class TestThread implements Runnable{ private int tickets = 5; @Override public void run() { while( true ) { synchronized( this ) { if( tickets <= 0 ) break; try { Thread.sleep( 100 ); } catch( Exception e ) { e.printStackTrace(); } System.out.println( Thread.currentThread().getName() + "出售票" + tickets ); tickets -= 1; } } }}2 运行
Thread-0出售票5
Thread-3出售票4
Thread-3出售票3
Thread-2出售票2
Thread-2出售票1
三 同步方法完成买票功能
1 代码
public class threadSynchronization{ public static void main( String[] args ) { TestThread t = new TestThread(); // 启动了四个线程,实现资源共享的目的 new Thread( t ).start(); new Thread( t ).start(); new Thread( t ).start(); new Thread( t ).start(); }}class TestThread implements Runnable{ private int tickets = 5; public void run() { while( tickets > 0 ) { sale(); } } public synchronized void sale() { if( tickets > 0 ) { try { Thread.sleep( 100 ); } catch( Exception e ) { e.printStackTrace(); } System.out.println( Thread.currentThread().getName() + "出售票" + tickets ); tickets -= 1; } }}2 运行
Thread-0出售票5
Thread-0出售票4
Thread-3出售票3
Thread-2出售票2
Thread-1出售票1
更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
java多线程-同步块Java同步块(synchronizedblock)用来标记方法或者代码块是同步的。Java同步块用来避免竞争。本文介绍以下内容:Java
Java中CountDownLatch进行多线程同步详解CountDownLatch介绍在前面的Java学习笔记中,总结了Java中进行多线程同步的几个方法:1
本文实例为大家分享了Java利用同步块synchronized()保证并发安全的具体代码,供大家参考,具体内容如下packageday10;/***同步块*有效
Java多线程线程同步与死锁1.线程同步多线程引发的安全问题一个非常经典的案例,银行取钱的问题。假如你有一张银行卡,里面有5000块钱,然后你去银行取款2000
Java线程同步根本上是要符合一个逻辑:加锁------>修改------>释放锁1、同步代码块示例如下:publicclassSyncBlock{static