정보보안공부

Java2_day09 본문

Language/Java2

Java2_day09

Steady_sp 2017. 3. 22. 16:35

***n01.creatThread - BeepThread

 

 

-> BeepThread 클래스에 extends Thread를 이용하여 run() 메소드를 만들었다.

 

***n01.creatThread - BeepTask

 

 

-> BeepTask 클래스에 implements Runnable을 이용하여 run()메소드를 만들었다.

 

***n01.creatThread - ThreadEx

 

 

-> Thread th1 = new BeepThread();

-> Runnable btask = new BeepTask();

    Thread th2 = new Thread(btask);

-> Thread th3 = new Thread(new Runnable() { public void run() {

    for(int i=0; i<5 ;i++) { System.out.println("aaa"); try{Thread.sleep(1300); }

    catch(Exception e) {} } } });

    new Thread안에 new runnable 을 바로 집어넣을 수 있다.

 

***n02.sync - SyncStmt

 

 

-> run메소드안에 for문을 실행하여 scounter.increment(); SafeCounter scounter선언

    SafeCounter 의 count를 증가

-> join()을 사용해 두개의 스레드의 count를 계속 증가시킨다.

 

***n02.sync - SafeCounter

 

 

-> int count; 설정

-> public synchronized void increment() { ++count; }

 

***n03.synchronized_ex - User1

 

 

-> User1에 extends Thread로 setCalculator메소드생성

    this.setName("User2") this.calculator = calculator

-> public void run() { calculator.setMemory(100); }

 

***n03.synchronized_ex - User2

 

 

-> User2에 extends Thread로 setCalculator메소드생성

    this.setName("User1") this.calculator = calculator

-> public void run() { calculator.setMemory(50); }

 

***n03.synchronized_ex - SyncMemory

 

 

-> private int memory; public int getMemory() { return memory; }

    public synchronized void setMemory(int memory)

    { this.memory = memory; try{Thread.sleep(2000); }

    catch(InterruptedException e) {}

    System.out.println(Thread.currentThread().getName() + ": " + this.memory);

-> synchronized : 해당스레드만 제외하고 나머지는 접근을 못하도록 막는다.

-> sleep : 대기시간을 주고싶을 때 1000은 1초이다.

 

***n03.synchronized_ex - MainThread

 

 

 

-> SyncMemory calculator = new SyncMemory();

 

-> User1 user1 = new User1();

    user1.setCalculator(calculator);

    user1.start();

 

-> User2 user2 = new User2();

    user2.setCalculator(calculator);

    user2.start();

 

***n05.wait_notify - DataBox

 

 

-> getData() 정의

-> setData(String data) 정의

 

***n05.wait_notify - ConsumerThread

 

 

-> ConsumerThread extends Thread //Thread를 상속해 run메소드 재정의해야한다.

-> public void run() { for(int i =1; i<=3; i++) { String data = dataBox.getData();

    DataBox 클래스에 getData()메소드 실행

 

***n05.wait_notify - ProducerThread

 

 

-> ProducerThread extends Thread //Thread를 상속해 run메소드 재정의해야한다.

-> public void run() { for(int i =1; i<=3; i++)

    { String data = "Data-" + i; dataBox.setData(data);

    DataBox 클래스에 setData()메소드 실행

 

***n05.wait_notify - WaitNotifyEx

 

 

-> ProducerThread pTh = new ProducerThread(dataBox) 실행

-> ConsumerThread cTh = new ConsumerThread(dataBox) 실행

'Language > Java2' 카테고리의 다른 글

Java2_day12  (0) 2017.03.25
Java2_day11  (0) 2017.03.24
Java2_day08  (0) 2017.03.21
Java2_day07  (0) 2017.03.18
Java2_day06  (0) 2017.03.17
Comments