정보보안공부
Java2_day09 본문
***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 |