网站搭建设计课程报告wordpress 无法登入

张小明 2026/1/1 1:14:43
网站搭建设计课程报告,wordpress 无法登入,深圳十大vi设计公司,做一个软件需要哪些步骤目录 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进行投诉反馈,一经查实,立即删除!

山东网站建设培训北京网站建设咸宁

Wan2.2-I2V-A14B跨平台部署全攻略:从入门到精通 【免费下载链接】Wan2.2-I2V-A14B Wan2.2是开源视频生成模型的重大升级,采用混合专家架构提升性能,在相同计算成本下实现更高容量。模型融入精细美学数据,支持精准控制光影、构图等…

张小明 2025/12/28 10:26:51 网站建设

上海网站seo诊断河北seo技术培训

如何利用 Dify 镜像实现 AI 应用的版本控制与发布 在企业加速拥抱大模型的今天,一个现实问题日益凸显:为什么很多 AI 应用总停留在“演示阶段”?明明测试效果不错,却迟迟不敢上线;一旦上线,又经常因为一条提…

张小明 2025/12/28 12:27:04 网站建设

建公司网站的详细步骤专业建站服务公司

Perl 循环结构与控制详解 1. 需求与目标程序 编写一个程序,它接收命令行中指定的一系列数字,然后完成以下两个任务: 1. 将这些数字按升序排序。 2. 遍历排序后的数字,并打印每个数字及其累加总和。 2. 多种循环类型介绍 2.1 foreach 循环 当列表中元素的具体(数字)…

张小明 2025/12/27 4:08:57 网站建设

万虹点读机如何做系统下载网站张浦专业做网站

CogAgent-9B:纯视觉交互重构2025人机协作新范式 【免费下载链接】cogagent-vqa-hf 项目地址: https://ai.gitcode.com/zai-org/cogagent-vqa-hf 导语 清华大学与智谱AI联合推出的CogAgent-9B-20241220版本,以11201120高分辨率视觉输入和跨平台G…

张小明 2025/12/27 22:02:45 网站建设

网站在线配色wordpress颜色插件

目录 一、回忆类加载过程 二、类加载器 1、定义与本质 2、JVM内置类加载体系 3、自定义类加载器 ClassLoader类中的两个关键方法: 核心原则: 4、类加载器加载的顺序 (1)核心:双亲委派模型下的委托与加载顺序 1&#xff…

张小明 2025/12/27 20:29:02 网站建设