原子操作在java环境下很难做到这个jvm总是会把时间片分给别人或许你可以换个想法你是不是想对某个数据采取独占操作那么你最好在这个类的操作方法采取同步不大好理解,自己想想吧
解决方案 »
- 如何将String转换成CLOB
- 关于一个编号的问题
- 急! 十六进制字符串转为字节!200分!请各位帮忙!
- 有返回值有参数的函数调用问题
- 文字列连接效率的问题(a+b ? a.concat(concat)? 还是用StringBuffer)
- 请问各位大大,小弟弟急问
- 关于时间。如何根据一个日期来算出这个日期是星期几呢?
- 怎样才能使JTable可以在一行中多行显示单元内容?
- @@@@@applet如何更改本地访问权限??
- 急:java 中数组的输入问题
- [PLEASE HELP]WHY CAN NOT I SEE THE GIF On The CANVAS???
- 心情不错,升五个三角,散分庆祝!
用synchronized因该已经何以了 不行的话做个单例类public class Asd{
Asd asd = new Asd();
private asd() {
}pubic Asd getInstance() {
return asd;
}
public static synchronized int a(){
1...
2...
3...
4...
}
}单个对象加上synchronized 应该万无一失
独占操作被打断也无所谓吧?
因为 synchronized 在逻辑上保证了该函数的原子性操作啊
1.把1,2,3,4写成一个方法,最后一行加上一个标志变量。
2.在其他地方调用这个方法后判断标志变量。
synchronized int a(boolean isDone){
isDone = false ;
1...
2...
3...
4...
isDone = true ;
}{
...
boolean symbol ;
A = a(symbol);
if(symbol)
{
//说明都执行了;
}else{
//说明没都执行;
}
...
}
方法已经加上了synchronized标记,所以就算被打断了,其他线程也不可能来调用这个方法的
凡是调用这个方法的线程都会进入阻塞状态,直到调用线程完成其对方法的调用