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
- Java
- thread
- 저장소
- Swing
- StringBuilder
- c#
- GIT
- 클래스
- 스프링부트
- class
- Dict
- event
- join()
- 프로그래머스스쿨
- 배열
- array
- Docker Desktop
- AssertJ
- 자바스크립트
- 자바
- SSL
- docker
- 파이썬
- JavaScript
- SpringBoot
- 객체
- synchronized
- Python
- JS
- 메소드
Archives
- Today
- Total
정리노트
[자바/java] synchronized 데이터 중복사용 방지, 좌석예약 본문
package q8;
class Seat {
static int usable = 10;
synchronized void print(String name, int n) {
System.out.println(name + " 접속\n가능한 좌석수: " + usable + " / 요청 좌석 수: " + n);
if (usable >= n && usable > 0) {
System.out.println("좌석 수: " + n + ", 예약완료");
usable -= n;
} else {
System.out.println("좌석 예약이 불가합니다.");
}
System.out.println(name + " 접속해제\n");
}
}
class People1 extends Thread {
Seat seat;
int num = 5;
People1(Seat s) {
seat = s;
}
public void run() {
seat.print(getName(), num); // 요청하는 좌석의 수 : 5
}
}
class People2 extends Thread {
Seat seat;
int num = 4;
People2(Seat s) {
seat = s;
}
public void run() {
seat.print(getName(), num); // 요청하는 좌석의 수 : 4
}
}
class People3 extends Thread {
Seat seat;
int num = 2;
People3(Seat s) {
seat = s;
}
public void run() {
seat.print(getName(), num); // 요청하는 좌석의 수 : 2
}
}
public class Q8 {
public static void main(String[] args) {
Seat obj = new Seat();
People1 p1 = new People1(obj);
People2 p2 = new People2(obj);
People3 p3 = new People3(obj);
p1.start();
p2.start();
p3.start();
}
}
728x90
'프로그래밍 > Java' 카테고리의 다른 글
[자바/java] 서버, 클라이언트 접속 (간단한 채팅) / TCP 프로토콜 (0) | 2023.02.07 |
---|---|
[자바/java] IP주소 찾기 / 사이트 내용 받기 (0) | 2023.02.07 |
[자바/java] Thread 활용 두 개 이미지 이동 컨트롤 - 2 / join() (1) | 2023.02.05 |
[자바/java] 하나의 list 두 개 스레드 동작 합 구하기 (0) | 2023.02.05 |
[자바/java] Thread, Graphics 도형을 그리고 thread로 크기변화 (0) | 2023.02.05 |