比如:class Test{
public static hello(String name ){
System.out.println(name);
}多个钱程同时调用,name变量是不是不能保证线程安全性

解决方案 »

  1.   

    没有问题呀,name是作为参数传进来的,根本没有线程问题,和static无关
      

  2.   

    sword_hero (sword) 引起了我的注意:
    如果是:
    class Test{
    private static name;private changename() {
    //些处改变了name
    }public static hello(){
    changename()
    System.out.println(name);
    }
    }结果会怎么样呢?
      

  3.   

    看你这个name是作什么用的了,要是计数器就该同步,要不然,逻辑上也是允许的吧
      

  4.   

    sword_hero (sword) 引起了我的注意:
    如果是:
    class Test{
    private static name;private changename() {
    //些处改变了name
    }public static hello(){
    changename()
    System.out.println(name);
    }
    }结果会怎么样呢?--------------------
    结果会很混乱.呵呵
      

  5.   

    那时不是说 java在处理调用static方法时,还是初始化了一个对象
      

  6.   

    对你的问题不是很明确,但是静态方法还是会存在多线程问题的。
    这里介绍一下类级别锁,看对你有没有什么帮助。对象的每个实例,除了存在对象级别锁,还存在类级别锁,它锁定类的所有实例的共享。synchronized语句也是可以使用类级别锁的。
    例如:
    public static synchronized void staticA(){
       ...
    }也可以使用如下代码锁定类类级别锁
    public static void staticB(){
       synchronized(ClassName.class){     //注意一定要有.class的扩展名,否则就是对象级别锁了
         ...
       }
    }
      

  7.   

    把 访问name的代码同步应该可以吧Object obj=new Object(); 
         
    synchronized(obj){  System.out.println(name);
    }
      

  8.   

    好象不会,因为 String  是不 变类型