比如一个synchronized函数,执行时,中间出了空指针异常。
那么之前正常的处理会不会回滚?

解决方案 »

  1.   

    详细说明一下吧。
    自定义一个连接池类实现Runnable接口。
    其中有一个getConnection函数是同步的。
    在此函数中前两步是
    1 从闲置连接里取出一个连接
    2 将该连接从闲置连接里删除
    假设这两步运行正常,而后面出了空指针异常,函数结束。
    那么,这时该连接池对象中的闲置连接里应该有没有刚才被删除的连接?为什么?
      

  2.   

    之后出现的异常不影响前面的执行结果,如果想回滚,就自己做,在catch把你删掉的连接再放回去
      

  3.   

    谢谢各位,自己做了个实验,确实不能回滚。
    断章取义地理解了synchronized函数具有原子性的说法。