java线程同步-synchronized
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,synchronized:同步(锁),可以修饰代码块和方法,被修饰的代码块和方法一旦被某个线程访问,则直接锁住,其他的线程将无法访问非静态方法的同步锁对象是this静态方法的锁同步对象是当前类的字节码
千家信息网最后更新 2025年01月26日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安全错误
数据库的锁怎样保障安全
服务器图片命名规则
西电网络安全周
集线器传输服务器
四叶草剧场服务器关闭是什么意思
江苏服务器硬盘维修
源码设定数据库
网络安全警示牌图片大全
华为服务器主板
成都网络安全销售
代理服务器那个好用
市局网络安全和技术
数据库的类型包括哪些内容
中国高校网络安全学院
如何在国泰安数据库上下载数据
网警检查网络安全的题目
棒谷科技软件开发薪资
友家互联网科技
广东省ipfs服务器配置云空间
游戏服务器邮件管理
实验安排管理系统数据库
分布式服务器框架
视频平台服务器硬盘
敏捷 精益 软件开发
域名解析到服务器仍然无法访问
服务器租用续费申请
阿拉德之怒长久服务器下载
发言提纲 网络安全
天河区软件开发职校
软件开发费用进哪个科目
nvr视频服务器