일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SQL
- select count
- sql insert
- 자바
- annotation
- sql index
- SQLite
- mssql 대용량 데이터
- 자바 어노테이션
- C++
- mssql insert
- 테이블용량조회
- lag
- mssql bulk insert
- mssql 대용량 데이터 insert
- jdbc bulk insert
- solvesql
- jtds
- c#
- jdbc
- MSSQL
- 윈도우함수
- MSSQL 인덱스
- MS-SQL
- Java
- 어노테이션
- MSSQL INDEX
- SQL Server
- 포인터
- Today
- Total
목록Java/Thread (2)
Basic Byte Bites
notify() wait() 를 호출했다면 에 의해서 락을 반납하고 대기실에서 대기 중인 쓰레 드 중에서 하나를 임의로 선택해서 통지할 뿐 락을 반납한 해당 쓰레드를 선택해서 통지 할수 없다. 운 좋게 락을 반납한 해당 스레드가 통지를 받으면 다행인데 그렇지 않 으면 계속 통지를 받지 못하고 무한정 기다리게 되는 현상이 발생한다 이런 현상을 '기아 현상' 이라 한다. 이 현상을 방지하기 위해 notify() 대신 notifyAll() 을 사용 해야 한다. 이 메서드는 대기실에 대기중인 모든 쓰레드에게 통지를 하기 때문에 기아 현상은 막았지만 통지 받은 쓰레드가 서로 락을 얻기 위해 경쟁을 하게 된다. 이처럼 여러 쓰레드가 서로 락을 얻기 위해 경쟁하는 것을 '경쟁 상태' 라 한다. 이 경쟁 상태를 개선하..
IDE에서 Thread의 suspend() 메소드와 resume() 메소드를 사용할 시 사용이 권장되지 않는다고 나온다. 이유는 두 메소드 모두 스레드 교착상태(deadlock)을 유발할 수 있기 때문인데, suspend() 메소드에 의해 타겟 스레드가 중단되는 시점에 중요한 리소스 등을 사용하고 있는경우 타겟 스레드가 재개될때까지 어느 스레드도 그 자원에 액세스 할 수 없기 때문이다. resume()은 단순히 suspend() 메소드에 의해 중단된 스레드를 재개하기 위해서만 사용한다. 따라서, suspend와 resume 메소드 대신 wait, notify, notifyAll 메소드를 사용하여 스레드를 제어하는것이 바람직하다. 이를 통해 스레드 안전성 문제를 피하고, 더 세밀한 제어가 가능하다.