Thread-safety就是说,如果多个线程调用这个类的方法,不会出现不可预知的不正常的情况

解决方案 »

  1.   

    线程安全的意思是多个线程同时操作不会有问题。我觉得线程安全主要是针对变量而言,例如一个Vector类型的变量,线程A和线程B同时作修改操作时直接操作就行,不必按照一般的先锁定,后操作,再解锁的方式来操作(或使用java的同步机制操作)。
    而非线程安全的变量,例如一个ArrayList类型的变量,如果多个线程同时直接操作就可能得出不正确的结果。你做个实验测一下就很容易发现的。
      

  2.   

    ghw(大浪淘沙):
    我加个sychronized关键字,变量是不是就是线程安全了?swing 组件是不是线程安全的?
      

  3.   

    不是操作swing只能在event-dispatch线程中。可以用
    SwingUtilites.invokeLator(Runnable),or 
    SwingUtilites.invokeAndWait(Runable),把操作加入event-dispath线程。
      

  4.   

    只是简单地给变量加个sychronized修饰肯定是不行的使用java的同步机制一般有两种方式:
    1.
    synchronized(想要锁定的对象)
    {
    //synchronized 程序区块(在任何一个时刻,只有一个线程会在这个程序区块中进行工作)
    //...

    }2.
    public synchronized void method_set_or_get_Value(...)
    {
    //访问或修改自己类的数据的代码(在任何一个时刻,只有一个线程能调用到本方法)
    //......

    }
    swing组件是不是线程安全的有什么关系?你有什么地方要多线程操作吗?
      

  5.   

    我正在学习多线程,对“swing组件不是线程安全的“这句话不是很理解。
    我认为swing组件的更新都是由event-dispatch线程处理,那末应该是安全的。就好像event-dispatch线程是个入口,swing组件的事务全部由它处理,不处理完又怎能响应其他组件的事件呢?