当前位置:编程学习 > JAVA >>

java多线程实例的成员变量问题

有一个线程通过下面listObj里面的线程实例修改线程的成员变量(修改前会判断线程实例的isBusy状态),那么被修改的该线程实例为毛有时运行会报空值,即逻辑操作取值部分?
List listObj=new ArrayList();
for(int i=0;i<30;i++){
   A a=new A();
   Thread thread=new Thread(a);
   listObj.add(a);
   thread.start();
}

class A implements Runnable{

   public Map map;
   public boolean isBusy=false;

   public void run(){
      while(true){
         if(map!=null){
           isBusy=true;
           //逻辑操作,不影响map,只读
           map=null;
           isBusy=false;
         }else{
           try {
             Thread.sleep(10);
           } catch (InterruptedException e) {
             e.printStackTrace();
           }
         }
      }
   }
}
多线程 java --------------------编程问答-------------------- 问题是你那个线程会不会把那个map改成非空之后,又改成null --------------------编程问答-------------------- map没锁定吧,所以被修改了,有时运行会报空值,
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,