일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스레드그룸
- 메모리스트림
- 상관서브쿼리
- first-of-child
- 표현 언어
- ThreadGroup()
- first-child
- InputDialog
- ID중복
- 리눅스세팅
- StringReader
- MemoryStream
- char[] String 형변환
- include 지시자
- Linux셋팅
- String char[] 형변환
- interrupted()
- sleep()메소드
- isinterrupted()
- interrupt()
- include액션태그
- 리눅스셋팅
- 상관 서브 쿼리
- StringWriter
- include지시자
- ObjectInputStream
- Daemon()
- Linux세팅
- 아이디중복
- 동기화
- Today
- Total
목록동기화 (2)
다연이네
동기화 멀티스레드 프로세스의 경우 여러 스레드가 같은 프로세스의 자원을 공유해 작업하기 때문에 서로의 작업에 영향을 주게 된다. 스레드A가 작업하던 도중에 다른 스레드B에게 제어권이 넘어갔을 때, 스레드A가 작업하던 공유자원을 스레드B가 임의로 변경한다면, 다시 스레드A로 제어권이 넘어가 작업을 마쳤을 때 의도했던 것과 다른 결과를 얻게 된다. 따라서 스레드가 특정 작업을 끝마치기 전까지 다른 스레드에 의해 방해받지 않도록 하는 것이 필요하다. 한 스레드가 진행중인 작업을 다른 스레드가 간섭하지 못하도록 막는 것이다. 이용 방법 1) 메소드 전체를 임계 영역으로 지정 public synchronized void calcSum(){ } 2) 특정 영역을 임계 영역으로 지정 synchronized (객체의 ..
package days26; public class Ex09 { public static void main(String[] args) { //문제 - 동기화 // 이름을 출력하는 스레드 선언: PrintWorker // 이름을 출력하는 클래스: PrintMachine (기계는 1대라서 모든 스레드가 공유해서 사용) 공유자원 PrintMachine machine = new PrintMachine(); //머신1대(공유자원) PrintWorker t1 = new PrintWorker("배다연", machine); PrintWorker t2 = new PrintWorker("김동준", machine); PrintWorker t3 = new PrintWorker("남도산", machine); PrintWorke..