java线程同步-synchronized
发表于:2025-12-05 作者:千家信息网编辑
千家信息网最后更新 2025年12月05日,synchronized:同步(锁),可以修饰代码块和方法,被修饰的代码块和方法一旦被某个线程访问,则直接锁住,其他的线程将无法访问非静态方法的同步锁对象是this静态方法的锁同步对象是当前类的字节码
千家信息网最后更新 2025年12月05日java线程同步-synchronized
- synchronized:同步(锁),可以修饰代码块和方法,被修饰的代码块和方法一旦被某个线程访问,则直接锁住,其他的线程将无法访问
- 非静态方法的同步锁对象是this
静态方法的锁同步对象是当前类的字节码对象
模拟火车站售票案例
同步代码块:
public class Ticket implements Runnable {
int tickets = 100;//总票数Object obj = new Object(); //锁对象@Overridepublic void run() { //卖票 while (true) { synchronized (obj) { if (tickets > 0) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "卖出了第" + (tickets--) + "张票"); } } }}}
同步方法
public class Ticket implements Runnable {
int tickets = 100;//总票数Object obj = new Object(); //锁对象@Overridepublic void run() { //卖票 while (true) { method(); }}public synchronized void method(){ if (tickets > 0) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "卖出了第" + (tickets--) + "张票"); }}}
测试类
public class TicketTest {
public static void main(String args[]){
Ticket t = new Ticket(); Thread t1 = new Thread(t); Thread t2 = new Thread(t); Thread t3 = new Thread(t); t1.setName("窗口1"); t2.setName("窗口2"); t3.setName("窗口3"); t1.start(); t2.start(); t3.start();}}
同步
对象
方法
代码
线程
票数
静态
卖票
字节
案例
火车
火车站
售票
测试
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
超级列表框修改多条数据库
如何更改移动服务器发送地址
数据库数据重复了 如何去重
文明重启有没有永久服务器
小学生关于网络安全的绘画
数据库表结构导出工具
monogodb数据库崩溃原因
华为软件开发岗在哪里
从大数据的角度解读数据库
签名验签服务器成交
运营商的ip可以用在云服务器吗
上海今日互联网科技有限公司
万得批量添加数据库
互动作业服务器
服务器堆栈
沈阳网络技术人员李
锐取录播服务器型号
服务器发生故障怎么排查和修复
aap软件开发流程
广州礼德软件开发有限公司
内蒙古英雄联盟用哪个服务器好
网络安全知识大赛总结
河北嵌入式软件开发哪家可靠
爷爷的小农院服务器繁忙
深圳前端软件开发价位
关于网络安全有什么法律
第九届网络安全年会
软件开发编程简单
韦若琛 网络安全
全球软件开发论文