Arthas中使用watch观测方法执行前后,基本类型参数的值不一致问题

本文详细介绍了在使用Arthas的watch命令时遇到的一个问题,即观测一个方法的基本类型参数(boolean类型)在执行前后值不一致的情况。通过分析代码逻辑、短路机制和watch命令的使用,发现是在方法内部重新赋值导致的。文章揭示了在某些情况下,即使是基本类型的参数,watch命令在方法执行前后可能会显示不同的结果,并提供了问题的解决方案。
摘要由CSDN通过智能技术生成

int flow2 = 6789;

new Thread(new Runnable() {

@Override

public void run() {

runRequest(flow2);

}

}).start();

}

}

/**

  • 假设该方法为请求的处理方法

*/

private static void runRequest(int flow){

//设置流水

setFlow(flow);

//判断是否支持 https

boolean supportHttps = condition1() && condition2() == 2 && “https”.equals(condition3());

//获取前缀,getPrefix的参数是我们的观测目标,看它是true还是false

String prefix = getPrefix(supportHttps);

//输出前缀

System.out.println(prefix);

}

private static String getPrefix(boolean supportHttps) {

supportHttps = subCondition();

return supportHttps ? “https” : “http”;

}

private static boolean condition1() {

//复杂逻辑

return true;

}

public static int condition2() {

//复杂逻辑

return 2;

}

public static String condition3() {

//复杂逻辑

return “https”;

}

private static boolean subCondition() {

//复杂逻辑

return false;

}

/**

  • 存储线程流水映射

*/

private static final ConcurrentHashMap<Long,Integer> flowMap = new ConcurrentHashMap<>(10);

/**

  • 根据当前线程id获取流水

  • @return flow 流水值

*/

private static int getFlow(){

return flowMap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值