一个线程同步的问题synchronized
下面的程序是没问题的,我想知道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
工行支付对接全指南:从产品选型到签名验签的踩坑实战
支付系统开发中,接口安全机制与数据一致性始终是核心挑战。企业对接银行支付通道时,往往面临产品线复杂、报文格式特殊、签名验签机制严格等问题,与常见互联网支付平台的开发体验差异明显。理解RSA签名、MD5摘要、AES加密等基本原理,掌握商户证书、密钥格式、异步通知与主动查单的协作逻辑,是保障交易链路可靠的关键。从PC商城的B2C网银网关到移动端的开放平台API,再到退款与对账的处理,一个完整的支付通道建设需要兼顾技术实现与运维监控。基于工行B2C网关与开放平台API双通道的实际对接经验,梳理了从产品选型、资质申
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生态下的生产级实现,深入解析跨列并行聚合、定制化业务函数、条件滚动窗口、下游友好封装等七种真实落地模式,兼顾性能优化与审计合规。
pandas多维聚合实战:生产级分组、滚动窗口与unstack重构
多维聚合是数据分析中连接原始数据与业务指标的核心技术,其本质是在分组基础上对多列执行差异化统计计算,并通过结构化输出支撑报表、风控和BI应用。理解groupby底层的单次扫描机制、滚动窗口的时间对齐原理、unstack的索引降维数学含义,是避免内存溢出、索引漂移和结果错位的关键。尤其在金融场景中,结合自定义聚合函数实现可审计的业务逻辑(如IQR异常值剔除)、滚动窗口支持欺诈检测(3日敏感窗口)、unstack构建管理驾驶舱交叉表,共同构成高可靠数据操作范式。本文聚焦pandas原生能力在银行级生产环境中的工


Java SE
