在多线程中,用synchronized修饰一个操作,可以防止在执行期间被中断。
比如转账的操作:
public synchronized void transfer (int from,int to,int amount) {
    if (accounts[from]<amount) 
        return;
    accounts[from] -= amount;
    accounts[to] += amount;
}
这样,accounts[to]肯定会被执行完成,而不会被其它线程中断。    

解决方案 »

  1.   

    楼上的对!你只要放在PUBLIC后!就OK了!!!
      

  2.   

    http://www-900.ibm.com/developerWorks/cn/java/j-threads/index.shtml
      

  3.   

    或者用
    synchronized(this){
      代码;
    }
    的形式把一些代码设置成“同步”的!
      

  4.   

    synchronized 线程里用, 可以修饰1个 函数,也可以1段代码,
      

  5.   

    synchronized 的语义确实保证了一次只有一个线程可以访问被保护的区段,但同时还包括同步线程在主存内互相作用的规则。理解 Java 内存模型(JMM)的一个好方法就是把各个线程想像成运行在相互分离的处理器上,所有的处理器存取同一块主存空间,每个处理器有自己的缓存,但这些缓存可能并不总和主存同步。在缺少同步的情况下,JMM 会允许两个线程在同一个内存地址上看到不同的值。而当用一个管程(锁)进行同步的时候,一旦申请加了锁,JMM 就会马上要求该缓存失效,然后在它被释放前对它进行刷新(把修改过的内存位置写回主存)。不难看出为什么同步会对程序的性能影响这么大;频繁地刷新缓存代价会很大。