일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- transaction
- 그리디
- Android
- 알고리즘
- pointcut
- Servlet
- 자바
- 스프링 핵심 기능
- Proxy
- Spring Boot
- spring
- JDBC
- db
- 백준
- 스프링
- 스프링 핵심 원리
- jpa
- 인프런
- http
- kotlin
- Exception
- AOP
- SpringBoot
- springdatajpa
- JPQL
- Thymeleaf
- Greedy
- 김영한
- java
- QueryDSL
- Today
- Total
목록thread (6)
개발자되기 프로젝트
1. ThreadLocal 사용법 값 저장: ThreadLocal.set(xxx) 값 조회: ThreadLocal.get() 값 제거: ThreadLocal.remove() 해당 쓰레드가 쓰레드 로컬을 모두 사용하고 나면 ThreadLocal.remove() 를 호출해서 쓰레드 로컬에 저장된 값을 제거해주어야 한다. 2. ThreadLocalService @Slf4j public class ThreadLocalService { private ThreadLocal nameStore = new ThreadLocal(); public String logic(String name){ log.info("저장 name={} --> nameStore={}", name, nameStore.get()); nameStor..
1. Thread Local??? 쓰레드 로컬은 해당 쓰레드만 접근할 수 있는 특별한 저장소를 말한다. 쉽게 이야기해서 물건 보관 창구를 떠올리면 된다. 여러 사람이 같은 물건 보관 창구를 사용하더라도 창구 직원은 사용자를 인식해서 사용자별로 확실하게 물건을 구분해준다. 사용자A, 사용자B 모두 창구 직원을 통해서 물건을 보관하고, 꺼내지만 창구 지원이 사용자에 따라 보관한 물건을 구분해주는 것이다. 2. 일반적인 변수 필드 여러 Thread가 같은 인스턴스의 필드에 접근하면 처음 쓰레드가 보관한 데이터는 사라질 수 있다. ThreadB가 저정하면 ThreadA가 저장한 데이터는 사라짐 ㄷㄷ 3. Thread Local Thread Local을 사용하면 각 Thread마다 별도의 내부 저장소를 제공한다...
1. wait(), notify() 리소스가 어떤 조건에서 더 이상 유효하지 않은 경우 리소스를 기다리기 위해 Thread가 wait() 상태가 된다. wait()상태가 된 Thread는 notify()가 호출될 때 까지 기다린다. 유효한 자원이 생기면 notify()가 호출되고 wait()하고 있는 Thread 중 무작위로 하나의 Thread를 재시작 하도록 한다. notifyAll()이 호출되는 경우 wait()하고 있는 모든 Thread가 재시작 된다. 이 경우 유효한 리소스 만큼의 Thread만이 수행될 수 있고 자원을 갖지 못한 Thread의 경우 다시 wait()상태로 돌아감. 자바에서는 notifyAll()메서드 사용을 권장 2. 도서관에서 책을 빌려보자 class Library{ publi..
1. Critical Section과 semaphore Critical Section은 두 개 이상의 thread가 동시에 에 접근 하는 경우 문제가 발생할 수 있기 때문에 동시에 접근할 수 없는 영역 semaphore는 특별한 형태의 시스템 객체이며 get/release 두 개의 기능이 있다. 한 순간 오직 하나의 thread만이 semaphore를 얻을 수 있고, 나머지 thread들은 대기(blocking)상태가 된다. semaphore를 얻은 thread만이 critical section에 들어갈 수 있다. 2. Park 과 Park2 가 동시에 Bank 자원에 접근하여 작업이 이루어지는 경우의 예제 Shared resource : Bank객체 Critical Section : saveMoney(..
1. Thread 우선순위 Thread.MIN_PRIORITY(=1)~Thread.MAX_PRIORITY(=10) 디폴트 우선순위: Thread.NORMAL_PRIORITY(=5) 우선 순위가 높은 Thread가 CPU의 배분을 받을 확률이 높음 setPriority()/ getPriority() Thread 우선순위 예제 class PriorityThread extends Thread{ @Override public void run() { int sum = 0; Thread t = Thread.currentThread(); System.out.println(t + " start"); for (int i=0; i
1. Thread??? process(실행중인 프로그램) : 프로그램이 실행되면 os로 부터 메모리를 할당받아 프로세스 상태가 됨. process(프로그램이 메모리에 올라간 상태) thread : 하나의 프로세스는 하나 이상의 thread를 가지게 되고, 실제 작업을 수행하는 단위는 thread 프로그램이 돌아가려면 cpu를 점유해야 함. CPU를 점유하는 단위가 thread 2. multi-threading 여러 thread가 동시에 수행되는 프로그래밍. 여러 작업이 동시에 실행되는 효과 thread는 각각 자신만의 작업 공간을 가짐(context) 각 thread사이에서 공유하는 자원이 있을 수 있음(자바는 static instance) 여러 thread가 자원을 공유하여 작업이 수행되는 경우 서로 ..