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 | 31 |
Tags
- JSP
- 메소드
- paint
- 어노테이션
- 메서드
- struts2
- 예외처리
- 에러페이지
- Android
- JavaScript
- HTML
- 안드로이드
- layout
- 전화걸기
- OGNL
- 국제화
- 이클립스
- 기본
- 배열
- Eclips
- AWT
- oracle
- 오버로딩
- mybatis
- Java
- 생성자
- 클래스
- Spring
- Menu
- Graphic
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 |