一个线程同步的问题synchronized

zhmyjsy zhmyjsy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

下面的程序是没问题的,我想知道2个问题:
1。 synchronized(a1)为什么这里是this就不对了?

2。这个try和catch有必要吗?
try
{
sleep(1);
}catch(InterruptedException e)
{System.out.println(e);}



public class Account1
{
private String name;
private int value;
public static void main(String[]args)
{
Account1 a1=new Account1();

(new Save1(a1,100)).start();
(new Save1(a1,200)).start();
(new Fetch1(a1,100)).start();




}

void put(int i)
{
value=value+i;
}
int get(int i)
{
if(value>i)
value=value-i;
else
{
i=value;
value=0;
}
return i;
}
int howmatch()
{
return value;
}
}
class Save1 extends Thread
{
private Account1 a1;
private int amount;
public Save1(Account1 a2,int amount)
{
a1=a2;
this.amount=amount;
}
public void run()
{
synchronized(a1)
{
int k=a1.howmatch();
try
{
sleep(1);
}catch(InterruptedException e)
{System.out.println(e);}
a1.put(amount);
System.out.println("现有"+k+",存入"+amount+",余额"+a1.howmatch());
}
}


}


class Fetch1 extends Thread
{
private Account1 a1;
private int amount;
public Fetch1(Account1 a3,int amount)
{
this.a1=a3;
this.amount=amount;
}


public void run()
{
synchronized(a1)
{
int k=a1.howmatch();
try
{
sleep(1);
}catch(InterruptedException e)
{System.out.println(e);}
a1.get(amount);
System.out.println("现有"+k+",取走"+amount+",余额"+a1.howmatch());
}
}
}
...全文

相关推荐

AI虎哥首创多域名授权验证管理系统+jsphp代码双端开源版完美定制版.zip

还在担心网上下的程序有后门 还在为源码有木马发愁吗 AI虎哥放大招 开源程序首创发布 全部源码全明文注释 随便查杀 给大家随心二开使用 域名授权验证系统是一个用于控制网站授权使用的解决方案,包含验证服务器和客户端两部分。通过本系统,您可以管理多个域名的授权状态,未授权的访问将被拦截并展示自定义信息或重定向到指定页面。 ## 功能特点 - **多平台支持**:提供PHP和JavaScript两种客户端实现 - **安全可靠**:使用密钥验证和签名机制确保验证过程安全 - **自定义提示**:可自定义未授权访问的提示信息和跳转链接 - **内存缓存**:使用会话存储减少验证请求,提高性能 - **实时控制**:可随时在管理面板添加、编辑或删除授权域名 - **强制刷新**:支持通过URL参数强制刷新验证状态 ## 系统架构 ### 服务器端(验证服务器) - 提供Web管理界面用于添加、编辑和删除授权域名 - 提供A

AI虎哥

工行支付对接全指南:从产品选型到签名验签的踩坑实战

支付系统开发中,接口安全机制与数据一致性始终是核心挑战。企业对接银行支付通道时,往往面临产品线复杂、报文格式特殊、签名验签机制严格等问题,与常见互联网支付平台的开发体验差异明显。理解RSA签名、MD5摘要、AES加密等基本原理,掌握商户证书、密钥格式、异步通知与主动查单的协作逻辑,是保障交易链路可靠的关键。从PC商城的B2C网银网关到移动端的开放平台API,再到退款与对账的处理,一个完整的支付通道建设需要兼顾技术实现与运维监控。基于工行B2C网关与开放平台API双通道的实际对接经验,梳理了从产品选型、资质申

Coffee Wu

java聚合支付之工行

package com.ruoyi.project.common.payUtil; import com.icbc.api.DefaultIcbcClient; import com.icbc.api.IcbcApiException; import com.icbc.api.IcbcConstants; import com.icbc.api.internal.util.internal.util.fastjson.JSON; import com.icbc.api.request.Cardbusin.

想起飞的猪

pandas多维聚合生产实践:7种可落地的高效聚合模式

多维聚合是数据分析与数据工程中的基础能力,指在多个业务维度(如时间、地域、类目)上对指标进行分组统计。其核心原理在于一次数据扫描完成多指标协同计算,避免重复IO与逻辑割裂。技术价值体现在稳定性、一致性与可维护性——尤其在金融风控、经营分析等强时效场景中,直接决定报表准点率与模型上线节奏。典型应用场景包括客户分层统计、滚动风险指标计算、跨渠道KPI矩阵生成等。本文聚焦pandas生态下的生产级实现,深入解析跨列并行聚合、定制化业务函数、条件滚动窗口、下游友好封装等七种真实落地模式,兼顾性能优化与审计合规。

a5199519

pandas多维聚合实战:生产级分组、滚动窗口与unstack重构

多维聚合是数据分析中连接原始数据与业务指标的核心技术,其本质是在分组基础上对多列执行差异化统计计算,并通过结构化输出支撑报表、风控和BI应用。理解groupby底层的单次扫描机制、滚动窗口的时间对齐原理、unstack的索引降维数学含义,是避免内存溢出、索引漂移和结果错位的关键。尤其在金融场景中,结合自定义聚合函数实现可审计的业务逻辑(如IQR异常值剔除)、滚动窗口支持欺诈检测(3日敏感窗口)、unstack构建管理驾驶舱交叉表,共同构成高可靠数据操作范式。本文聚焦pandas原生能力在银行级生产环境中的工

zuroc
评论 10
收藏 已收藏
分享
返回顶部
zhmyjsy
Java SE 62,620 成员 307,251 内容