gpt4 book ai didi

java - 源代码操作(添加同步块(synchronized block))更改变量范围

转载 作者:行者123 更新时间:2023-12-01 14:35:52 26 4
gpt4 key购买 nike

我正在写一个路径分析工具,我使用jdt Astparser来修改源代码如果我想在每个原始行之后添加一些代码并让它们成为原子操作并且不改变源代码的行为。像这样:原始源代码:

int a = 0;
int b = 0;
a = b;

处理后

synchronized (lock) {
int a = 0; //original code
//my code
//....
//end
}
synchronized (lock) {
int b = 0; //original code
//my code
//....
//end
}
synchronized (lock) {
a = b; //original code
//my code
//....
//end
}

但是它改变了变量作用域,变量a和b不再是全局的,代码无法编译。

有没有什么方法可以将变量声明和我插入的代码结合起来,让它们成为原子操作,并且不改变变量范围?

...抱歉我的英语:)

最佳答案

不要在 block 中声明它们。这与初始化本身无关。

int a, b;

synchronized (lock) {
a = 0;
}
synchronized (lock) {
b = 0;

}
synchronized (lock) {
a = b;
}

不过,我不确定您为什么要使用三个同步 block ,除非代码比您的示例建议的复杂得多。

关于java - 源代码操作(添加同步块(synchronized block))更改变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16493681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com