解决方案 »

  1.   

    有几个原则的:
    程序次序规则:一个线程内,代码的执行会按照程序书写的顺序
    管程锁定原则:对同一变量的unlock操作先行发生于后来的lock操作
    volatile变量规则:对一个volatile的写操作先行发生于后来的读操作
    线程启动原则:Thread的start()先行发生于线程内的所有动作
    线程终止原则:线程内的所有动作都先行发生于线程的终止检测
    线程中断原则:对线程调用interrupt()先行发生于被中断的代码检测到是否有中断发生
    对象终结原则:一个对象的初始化操作先行发生于finalize()方法
    传递性:A先行发生于B,B先行发生于C,那么A先行发生于C
    具体参考这篇博文 http://github.thinkingbar.com/thread-judgement/
      

  2.   

    可以用锁,可以用sychronized块或者方法,或者使用jdk提供的线程安全的数据结构;synchronized 能保证该类是线程安全的。
      

  3.   

    去看看《java并发编程实战》这本书
      

  4.   

    http://www.ibm.com/developerworks/cn/java/j-jtp09263/,看看这个,说得很全。
      

  5.   


    这个可不一定吧,应该是所有字段是不可变final才算是~?
      

  6.   


    这个可不一定吧,应该是所有字段是不可变final才算是~?
    我只是举的书上的例子,书上列举了几种情况,一定是线程安全的。