如何让网站长尾关键词有排名比亚迪新能源汽车报价大全一览表

张小明 2026/1/10 9:31:31
如何让网站长尾关键词有排名,比亚迪新能源汽车报价大全一览表,南昌网站建设资讯,网站实名认证怎么做目录 1.场景 2.编写程序 3.解决办法#xff1a;线程同步 1)synchronized同步代码块 2)synchronized同步方法 3)两个方式的对比 4)写一个锁对象 4.使用场景 使用Lock的场景 使用synchronized的场景 1.场景 小明和小红是一对夫妻#xff0c;他们有一个共同的账户线程同步1)synchronized同步代码块2)synchronized同步方法3)两个方式的对比4)写一个锁对象4.使用场景使用Lock的场景使用synchronized的场景1.场景小明和小红是一对夫妻他们有一个共同的账户有余额十万块钱有一天他们各自同时取了十万块钱。那谁能成功取到这十万呢2.编写程序1)创建账户类创建账户对象来代表夫妻的共同账户提供取钱方法package ThreadSecurity; public class Account { private Integer money; public Account() {} public Account(Integer money) { this.money money; } public Integer getMoney() { return money; } public void setMoney(Integer money) { this.money money; } //取钱方法 public void drawMoney(Integer money) { //看看是谁来取钱 String name Thread.currentThread().getName(); //验证余额 if (this.money money) { //先打印一次以免程序执行过快反而不出现安全问题 System.out.println(name取钱成功取出了money元); this.money - money ; System.out.println(name 取钱成功,余额 this.money 元); } else { System.out.println(余额不足); } } }2)使用线程类运行两个线程来模拟取钱过程package ThreadSecurity; public class MyThread implements Runnable{ private Account account; public MyThread(Account account) { this.account account; } Override public void run() { account.drawMoney(100000); } }3)测试package ThreadSecurity; /** * 模拟线程同步问题 * 小明和小红同时取同一个账户的钱 */ public class Test { public static void main(String[] args) { //创建账户类 Account account new Account(100000); //创建小明线程 Thread xmnew Thread(new MyThread(account)); xm.setName(小明); xm.start(); //创建小红线程 Thread xhnew Thread(new MyThread(account)); xh.setName(小红); xh.start(); } }结果(也有可能是小红取钱成功)可见如果两个人都取钱成功那么银行就会亏损十万元。那么该怎么解决呢3.解决办法线程同步1)synchronized同步代码块作用把访问共享资源的核心代码块上锁以此保证线程安全在核心逻辑取钱方法当中修改package ThreadSynchronized01; public class Account { private Integer money; public Account() {} public Account(Integer money) { this.money money; } public Integer getMoney() { return money; } public void setMoney(Integer money) { this.money money; } //取钱方法 public void drawMoney(Integer money) { //看看是谁来取钱 String name Thread.currentThread().getName(); //synchronized代码块给代码块上锁 //线程通过竞争锁拿到锁对象(this)之后可以执行代码块执行完之后释放 synchronized (this) { //验证余额 if (this.money money) { //先打印一次以免程序执行过快反而不出现安全问题 System.out.println(name取钱成功取出了money元); this.money - money ; System.out.println(name 取钱成功,余额 this.money 元); } else { System.out.println(name取钱失败,余额不足); } } } }语法synchronized(锁对象){//业务逻辑......}锁对象可以是其他对象但是不建议因为如果是某一常量的话可能会影响其他无关线程的运行。用this合适因为这样不会影响其他无关线程的执行也能起到锁的作用。对于实例方法建议使用this作为锁对象对于静态方法建议使用字节码(类名.class)作为锁对象执行结果结果不唯一2)synchronized同步方法作用把访问共享资源的核心方法上锁以此保证线程安全修改取钱方法package ThreadSynchronized02; public class Account { private Integer money; public Account() {} public Account(Integer money) { this.money money; } public Integer getMoney() { return money; } public void setMoney(Integer money) { this.money money; } //取钱方法 //synchronized同步方法和synchronized代码块大致相同 //synchronized方法的性能比synchronized代码块低因为synchronized代码块可以让其他线程先处理没有线程安全的代码 //synchronized同步方法维护了一个隐式锁 public synchronized void drawMoney(Integer money) { //看看是谁来取钱 String name Thread.currentThread().getName(); //验证余额 if (this.money money) { //先打印一次以免程序执行过快反而不出现安全问题 System.out.println(name取钱成功取出了money元); this.money - money ; System.out.println(name 取钱成功,余额 this.money 元); } else { System.out.println(name取钱失败,余额不足); } } }结果(结果不唯一)3)两个方式的对比4)写一个锁对象Lock是Java并发包java.util.concurrent.locks中提供的显式锁机制相比synchronized内置锁它提供了更灵活、功能更丰富的锁控制以ReentrantLock可重入锁为例package ThreadLock; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Account { //锁对象,加上final防止锁被修改 private final Lock lock new ReentrantLock(); private Integer money; public Account() {} public Account(Integer money) { this.money money; } public Integer getMoney() { return money; } public void setMoney(Integer money) { this.money money; } //取钱方法 public void drawMoney(Integer money) { //看看是谁来取钱 String name Thread.currentThread().getName(); //ctrlaltt选中代码块 try { //上锁 lock.lock(); //验证余额 if (this.money money) { //先打印一次以免程序执行过快反而不出现安全问题 System.out.println(name取钱成功取出了money元); this.money - money ; System.out.println(name 取钱成功,余额 this.money 元); } else { System.out.println(余额不足); } } catch (Exception e) { throw new RuntimeException(e); }finally { //unlock必须执行如果前面发生异常也要解锁所以要在finally里面 lock.unlock(); } } }结果(不唯一):4.使用场景使用Lock的场景需要高级功能可中断、超时、尝试锁需要多个条件变量复杂的线程协调读写分离场景读多写少需要公平性控制按顺序获取锁性能关键场景高竞争下的性能优化使用synchronized的场景简单同步需求基本的互斥访问代码简洁性减少代码复杂度自动管理避免忘记释放锁内建优化JVM对synchronized有深度优化
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

绿色大气漂亮dedecms茶叶企业网站学校网站前置审批

AI开发者必备:PyTorch-CUDA-v2.9开箱即用镜像全面解析 在深度学习项目开发中,你是否曾经历过这样的场景?刚拿到一台新服务器,兴致勃勃准备训练模型,结果花了整整两天才把 PyTorch、CUDA、cuDNN 的版本配对成功&#xf…

张小明 2026/1/8 7:26:15 网站建设

网站建设合同首付多少钱绵阳建设网工程招标

如何3分钟获取B站OBS推流码实现专业直播 【免费下载链接】bilibili_live_stream_code 用于在准备直播时获取第三方推流码,以便可以绕开哔哩哔哩直播姬,直接在如OBS等软件中进行直播,软件同时提供定义直播分区和标题功能 项目地址: https://…

张小明 2026/1/7 17:29:42 网站建设

沈阳网站网站做多个镜像

清除GPU缓存和卸载模型功能对长期运行服务的意义 在部署语音识别系统时,我们常常会遇到这样的场景:服务刚启动时响应迅速、资源充足,但运行几小时后开始变慢,甚至突然报出 CUDA out of memory 错误,导致整个识别流程中…

张小明 2026/1/8 23:12:47 网站建设

做购物网站写数据库的流程家乡网页模板

ModelScope实战指南:从零开始构建企业级AI应用 【免费下载链接】modelscope ModelScope: bring the notion of Model-as-a-Service to life. 项目地址: https://gitcode.com/GitHub_Trending/mo/modelscope 还在为复杂的AI模型部署而头疼吗?面对海…

张小明 2026/1/8 19:02:32 网站建设

网站栏目标签如何调用黑龙江省建设教育协会网站

软件许可指南:常见许可类型解析 1. 引言 在软件开发和使用过程中,软件许可问题是一个复杂且关键的领域。不同的软件许可规定了软件的使用、分发和修改方式。了解常见的软件许可类型,有助于开发者正确选择适合自己项目的许可,也能让使用者明确自己的权利和义务。 2. 常见…

张小明 2026/1/7 13:30:59 网站建设

做网站对于不同的分辨率网页制作心得体会

每年这个时候,12306的抢票大战都会准时上演。查车次、盯放票、拼手速、等候补……不少同学一边忙着上课,一边还得为一张回家的车票“操碎了心”。今天我们要分享的就是一个能帮你高效查询铁路余票、实时掌握车次信息的智能体工具,轻松应对假期…

张小明 2026/1/8 18:00:48 网站建设