본문 바로가기
반응형

thread7

ThreadPoolExecutor 로 멀티 쓰레드 구현 Thread 에 대해서는 아래 참고 포스팅 참고 바란다. Thread를 다른 Thread 와 관계를 없애기 위한 ThreadLocal (참고포스팅 참고), 혹은 일정 시간동안 Thread 를 멈추게하는 sleep (참고포스팅 참고), 혹은 count 를 두고 그동안 Thread 를 얼려두는 countDownLatch(참고포스팅참고) 등이 있지만, 이것들은 각각 하나의 Thread를 띄우기 위함이고, 반대로 작업의 주체가 되는 Thread를 여러개를 동시에 띄울수도 있다. 멀티 쓰레드에 대해서는 이미 다룬 글이 있고 실습을 위해 본 포스팅을 작성한다. 개념에 대해서는 아래 참고 포스팅을 참고 바란다. 바로 예제 코드를 만나보는것이 빠른 이해에 도움이 될것이다. public static void main(S.. 2024. 1. 21.
CountDownLatch (다른 쓰레드 대기) 이전 포스팅에서 Thread 간에 동시성 이슈에 대해 다룬 글이 있다. 자세한 내용은 참고 포스팅 참고 바란다. Thread 를 생성해서 사용할때 별도의 쓰레드 공간을 만들어서 사용하기 위해서는 아래 참고포스팅에있는 threadLocal을 사용하는 방식도 있지만 CountDownLatch 를 사용하는 방법도 있다. 예시 코드로 바로 설명하면 private CountDownLatch countDownLatch = new CountDownLatch(5); private Thread1 thread1; private Thread2 thread2; @GetMapping("/threadtest") public void threadStart() { thread1 = new Thread1(); thread1.start.. 2023. 10. 13.
ThreadLocal (동시성문제) 사용법 및 주의사항 이전 포스팅에서 Thread 사용법에 대해서 다룬적이 있다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 하지만 대량 트래픽이 존재하는 서비스에서 매번 발생하는 문제. 바로 동시성 이슈 이다. 자바 Spring에서는 기본으로 Bean을 singleton으로 띄우게 된다. singleton 에 대한 자세한 내용은 아래 참고 포스팅 참고 바란다. 테스트를 할 경우에는 하나의 요청이 들어오니 상관이 없지만 동시에 여러 요청이 들어올 경우에 하나의 bean에 여러 값을 동시에 입력을 하면 출력은 다른 값이 나오는 이슈가 생길수 있다. 아래 그림을 보면 하나의 클라이언트가 하나의 bean에 입력을 하면 정상적으로 입력한 값이 bean에 저장되고 그 값을 가져올수 있다. 하지만 아래 그림과 상황이 같다면 프로세스.. 2023. 10. 12.
Java에서 Thread (Runnable) 이전 포스팅에서 Thread 에 대해 다룬적이 있다. 자세한 내용은 참고 포스팅 참고 바란다. Java에서 Thread란 참고포스팅의 Thread와 비슷한 개념으로 실행하는 주체를 말한다. 코드가 돌아가기 위해서는 Thread 위에서 코드가 돌아가고 이 Thread들이 모여 Process를 이룬다. Java에서 Thread를 자주 사용하곤 했는데 sleep 메서드를 사용할때 주로 사용이 되었다. 관련 내용은 아래 참고 포스팅 참고 바란다. Java 개발을 하면 IDE를 사용하여 Java 개발을 할 경우 console을 볼수 있는데 여기서 이 부분이 Thread명이다. 따로 설정을 안해주면 기본 Thread중 하나로 잡히게 되고 그 기본 Thread가 이렇게 보이게 된다. 자바에서 Thread를 사용할때 .. 2023. 10. 10.
Multi-thread 쓰레드에 대해서 사용을 할때 멀티 쓰레드에 대한 내용을 다뤄보려고 한다. Thread 에 대한 기본적인 내용은 아래 참고 포스팅 참고 바란다. 멀티 쓰레딩이란 아래 그림을 보면 이해가 쉬울 것이다. 왼쪽 싱글 스레드에 비해 오른쪽 여러개의 멀티 쓰레드는 병행 처리를 하면서 스레드의 부하를 줄여주기도 하고 경우에 따라서는 더 빠른 속도를 나타내기도 한다. 장점 응답성 프로그램의 일부분(스레드)이 중단되거나 긴 작업을 수행하더라도 프로그램의 수행이 계속 되어 사용자에 대한 응답성이 증가 ex) 멀티 스레드가 적용된 웹 브라우저 프로그램에서 하나의 스레드가 이미지 파일을 로드하고 있는 동안, 다른 스레드에서 사용자와 상호작용 가능 경제성 프로세스 내 자원들과 메모리를 공유하기 때문에 메모리 공간과 시스템 자원.. 2023. 8. 10.
Thread란? (process비교) 먼저 thread 에 알기 전보다 알아야할 것이 있다. 그는 바로 프로세스라는것이고 프로세스와 thread 에 차이를 알아본다. 프로세스(process)란? 프로세스(process)란 단순히 실행 중인 프로그램(program)이라고 할 수 있다. 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말한다. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성된다. 스레드(thread)란? 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미한다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threa.. 2023. 2. 21.
delay 설정하기 (Thread.sleep) 코딩을 하다보면 일정 시간 잠깐 정지, delay를 해야할 경우가 있다. 파이썬에서는 간단하게 time.sleep(10) 이렇게 지정을 해주면 되지만 자바에서는 thread 단에서 잡아줘야한다. 코드는 다음과 같다. Thread.sleep(1000); 괄호 안의 값은 ms 로 1000ms = 1초 이다. 파이선과 비슷한 문법이긴 하지만 자바에서는 여기서 끝이 아니라 한가지 작업을 추가로 해줘야한다. Thread를 건드리기에 try catch 문으로 예외 처리를 해줘야한다. 그래서 결국 코드는 이렇게 된다. try { Thread.sleep(1000); }catch(Exception e) { System.out.println(e); } Thread에 대한 개념은 아래 참고 포스팅 참고 바란다. 참고 포스팅.. 2022. 8. 13.
반응형