Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- OGNL
- paint
- Eclips
- 에러페이지
- 안드로이드
- 이클립스
- Spring
- 배열
- 기본
- Java
- oracle
- 예외처리
- AWT
- Android
- 메소드
- HTML
- 생성자
- mybatis
- 어노테이션
- struts2
- 메서드
- 국제화
- JavaScript
- 오버로딩
- JSP
- Graphic
- layout
- 전화걸기
- Menu
- 클래스
Archives
- Today
- Total
note
스레드 동기화 본문
package com.basic;//스레드 동기화 Synchronized
class ATM implements Runnable{
//공유 자원
private long depositeMoney = 10000;
public void run(){
synchronized (this){
for(int i=0;i<5;i++){
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
if(getDepositeMoney() <= 0)
break;
//임계 영역 : 공유자원을 변경하는 코드영역
withDraw(1000);
}
}
}
public void withDraw(long howMuch){
if(getDepositeMoney()>0){
depositeMoney -= howMuch;
System.out.println(Thread.currentThread().getName()+" , "+getDepositeMoney());
}else{
System.out.print(Thread.currentThread().getName()+" , ");
System.out.println("잔액이 부족하다");
}
}
public long getDepositeMoney(){
return depositeMoney;
}
}
public class SynchronizedEx {
public static void main(String[] args) {
ATM atm = new ATM();
Thread mother = new Thread(atm,"mother");
Thread son = new Thread(atm,"son");
mother.start();
son.start();
}
}
mother , 9000
mother , 8000
mother , 7000
mother , 6000
mother , 5000
son , 4000
son , 3000
son , 2000
son , 1000
son , 0
'자바 > 스레드' 카테고리의 다른 글
swing으로 디지털 시계 만들기 (0) | 2012.01.02 |
---|---|
Thread Priority (0) | 2011.12.30 |
멀티 스레드 (0) | 2011.12.30 |
thread runnable (0) | 2011.12.30 |
스레드 (0) | 2011.12.30 |