본문 바로가기

Java SE/Data Share 01

Data Share 01


/* 2개의 쓰레드가 코드와 데이터를 공유하는 상황
* synchronized를 적용하여 데이터의 일관성 확보
* 선수지식: 쓰레드의 코드공유, 쓰레드의 이름설정 및 활용, synchronized키워드
* 아래의 소스를 실행해 보면 데이터의 일관성이 유지된다.
* 순차처리가 아닌 병행처리도 정상적으로 되고 있다.
*/
class Code2 implements Runnable{
 int i = 0;
 public void run(){
  String name = null;
  while(i<100){
   synchronized(this) {
    i++;
    name = Thread.currentThread().getName();
    System.out.println(name+"시작:"+i);
    try{
     Thread.sleep(30);
    }catch(InterruptedException e){}
    System.out.println(name+"끝:"+i);
   }
   try{
    Thread.sleep(20);
   }catch(InterruptedException e){}
  }
 }

 public static void main(String[] args) {
  Code2 code = new Code2();
  Thread t1 = new Thread(code);
  Thread t2 = new Thread(code);
  t1.setName("t1");
  t2.setName("t2");
  t1.start();
  t2.start();
 }
}