쓰레드를 사용하여 이미지를 연속적으로 받아오는데 2개를 동시에 받다가 4개를 받게 하면 에러가 나네요

처음에 4개를 동시에 보여주다가 2개를 보여주게하면 에러는 안나는데

2개에서 4개는 에러가 바로 나네요

6개 이미지 보여주는것도 6->4->2 는 잘되는데 2->4->6은 안되네요

 

 public void onCreate(Bundle savedInstanceState) {
   
  super.onCreate(savedInstanceState);
  
  mQuit=false;
  Intent intent = getIntent();
  str = intent.getStringExtra("TextIn");  //주소를 받아온다
  
  
  if(multi == 2){ // 두개의 영상을 받아올시 레이아웃과 이미지뷰, 주소를 셋팅해준다
   setContentView(R.layout.multi2);
   
   imgView1 = (ImageView) findViewById(R.id.imgview1);
   imgView2 = (ImageView) findViewById(R.id.imgview2);
   
   imgView1.setOnClickListener(clk);
   imgView2.setOnClickListener(clk);
   
   imagePath1 = "http://"+str+":8080/cam_1.jpg";
   imagePath2 = "http://"+str+":8080/cam_2.jpg";
  }
  else if(multi == 4){ // 네개의 영상을 받아올시 레이아웃과 이미지뷰, 주소를 셋팅해준다
   setContentView(R.layout.multi4);
   
   imgView1 = (ImageView) findViewById(R.id.imgview1);
   imgView2 = (ImageView) findViewById(R.id.imgview2);
   imgView3 = (ImageView) findViewById(R.id.imgview3);
   imgView4 = (ImageView) findViewById(R.id.imgview4);
   
   imgView1.setOnClickListener(clk);
   imgView2.setOnClickListener(clk);
   imgView3.setOnClickListener(clk);
   imgView4.setOnClickListener(clk);
   
   imagePath1 = "http://"+str+":8080/cam_1.jpg";
   imagePath2 = "http://"+str+":8080/cam_2.jpg";
   imagePath3 = "http://"+str+":8080/cam_3.jpg";
   imagePath4 = "http://"+str+":8080/cam_4.jpg";
  }
  else if(multi == 6){ // 여섯개의 영상을 받아올시 레이아웃과 이미지뷰, 주소를 셋팅해준다
   setContentView(R.layout.multi6);
   
   imgView1 = (ImageView) findViewById(R.id.imgview1);
   imgView2 = (ImageView) findViewById(R.id.imgview2);
   imgView3 = (ImageView) findViewById(R.id.imgview3);
   imgView4 = (ImageView) findViewById(R.id.imgview4);
   imgView5 = (ImageView) findViewById(R.id.imgview5);
   imgView6 = (ImageView) findViewById(R.id.imgview6);
   
   imgView1.setOnClickListener(clk);
   imgView2.setOnClickListener(clk);
   imgView3.setOnClickListener(clk);
   imgView4.setOnClickListener(clk);
   imgView5.setOnClickListener(clk);
   imgView6.setOnClickListener(clk);
   
   imagePath1 = "http://"+str+":8080/cam_1.jpg";
   imagePath2 = "http://"+str+":8080/cam_2.jpg";
   imagePath3 = "http://"+str+":8080/cam_3.jpg";
   imagePath4 = "http://"+str+":8080/cam_4.jpg";
   imagePath5 = "http://"+str+":8080/cam_5.jpg";
   imagePath6 = "http://"+str+":8080/cam_6.jpg";
  }

  //wifistate(); // 네트워크 상태 확인
  
  LoadImageThread LoadImageMain = new LoadImageThread(); //스레드를 생성
  LoadImageMain.start(); // 영상을 받아오는 스레드를 실행한다
 }
 
 @Override
 public boolean onCreateOptionsMenu(Menu menu) { // 2개,4개,6개의 화면 보여주기를 선택할수 있는 옵션메뉴
  super.onCreateOptionsMenu(menu);
  
  SubMenu etc = menu.addSubMenu("화면 분할");
  etc.setIcon(R.drawable.icon);
  etc.add(0,1,0,"2 x 1");
  etc.add(0,2,0,"2 x 2");
  etc.add(0,3,0,"2 x 3");
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  
  Intent intent = new Intent(CopyOfMultiView.this, CopyOfMultiView.class);
  
  switch (item.getItemId()) {
  
  case 1:
   
   multi = 2; // 2개의 영상을 동시에 받아오게한다. 현재 액티비티를 새로 불러오고 지금 액티비티를 종료 시킨다.
      Toast.makeText(this,"2 x 1",Toast.LENGTH_SHORT).show();
      intent.putExtra("TextIn", str);
      startActivity(intent);
      finish();
      return true;
   
  case 2:  // 4개의 영상을 동시에 받아오게한다. 현재 액티비티를 새로 불러오고 지금 액티비티를 종료 시킨다.
      multi = 4;
   Toast.makeText(this,"2 x 2",Toast.LENGTH_SHORT).show();
       intent.putExtra("TextIn", str);
      startActivity(intent);
      finish();
     return true;
   
  case 3: // 6개의 영상을 동시에 받아오게한다. 현재 액티비티를 새로 불러오고 지금 액티비티를 종료 시킨다.
      multi = 6;
   Toast.makeText(this,"2 x 3",Toast.LENGTH_SHORT).show();
      intent.putExtra("TextIn", str);
      startActivity(intent);
      finish();
      return true;
     }
  return false;
 }
 
 
 // 네트워크 상태 알림 및 상태별 데이터 전송 속도//
 public void wifistate() {
  manager = (ConnectivityManager) CopyOfMultiView.this.getSystemService(Context.CONNECTIVITY_SERVICE);
  mobile = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
  wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  if (!mobile.isConnected() && !wifi.isConnected()) {
   finish();
  } else if (mobile.isConnected()) {
   sleepspeed = 1500;
  } else if (wifi.isConnected()) {
   sleepspeed = 700;
  }
 }

 class LoadImageThread extends Thread { //이미지를 연속적으로 계속 불러오는 스레드
  public void run() {
   while (!loop) {
    handler.sendEmptyMessage(multi);
    try {
     Thread.sleep(sleepspeed);
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     loop=false;
     e.printStackTrace();
    }
    if (mQuit) {
     break;
    }
   }
  }
 }
 
 Handler handler = new Handler() { //이미지를 받아오는 LoadImage를 실행하게 하는 핸들러
  @Override
  public void handleMessage(Message msg) {
   
   
   if(multi==2){ // 2개 영상보여주기를 선택했을때 영상을 받아오는 LoadImage를 두개 사용
    LoadImage(imagePath1, imgView1);
    LoadImage(imagePath2, imgView2);
   }
   else if(multi==4){// 4개 영상보여주기를 선택했을때 영상을 받아오는 LoadImage를 두개 사용
    LoadImage(imagePath1, imgView1);
    LoadImage(imagePath2, imgView2);
    LoadImage(imagePath3, imgView3);
    LoadImage(imagePath4, imgView4);
   }
   else if(multi==6){// 6개 영상보여주기를 선택했을때 영상을 받아오는 LoadImage를 두개 사용
    LoadImage(imagePath1, imgView1);
    LoadImage(imagePath2, imgView2);
    LoadImage(imagePath3, imgView3);
    LoadImage(imagePath4, imgView4);
    LoadImage(imagePath5, imgView5);
    LoadImage(imagePath6, imgView6);
   }
    
   
   super.handleMessage(msg);
  }
 };
 public void LoadImage(String $imagePath, ImageView ImageView) { //주소와 이미지뷰를 인수로 받아 이미지를 받아온다
  // TODO Auto-generated method stub           //받아온 이미지를 이미지뷰에 비티맵으로 변환하여 셋팅
  InputStream inputStream = OpenHttpConnection($imagePath); //스트림연결을 통하여 이미지를 받아온다
  Bitmap bm = BitmapFactory.decodeStream(inputStream);
  ImageView.setImageBitmap(bm);
 }