"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java의 스레드 동시성

Java의 스레드 동시성

2024년 11월 19일에 게시됨
검색:498

Thread Concurrency In Java

고급 Java의 스레드 동시성 또는 멀티스레딩을 사용하면 여러 스레드가 동시에 실행되어 복잡한 애플리케이션의 성능과 응답성이 향상됩니다. 주요 개념과 유틸리티에 대한 간략한 분석은 다음과 같습니다.

Java 멀티스레딩의 주요 기능:

  1. 스레드를 생성하는 중입니다.
  2. 실행자를 통한 스레드 관리
  3. 동시성 유틸리티
  4. 포크/조인 프레임워크
  5. 완벽한 미래를 위한 비동기 프로그래밍

1️⃣ 스레드 생성.

  • 스레드 확장: run() 메서드를 재정의하여 새 스레드를 만듭니다.

  • Runnable 구현: Runnable 인스턴스를 Thread 객체에 전달합니다.

  • Callable 구현: Runnable과 달리 Callable을 사용하면 스레드가 결과를 반환하고 확인된 예외를 처리할 수 있습니다.

2️⃣ 실행자와 스레드 관리.

  • Java의 실행자 프레임워크(java.util.concurrent.ExecutorService)는 스레드 풀을 관리하여 작업을 효율적으로 처리할 수 있도록 해줍니다.

  • FixedThreadPool 및 CachedThreadPool과 같은 실행기는 재사용 가능한 스레드 풀을 생성하여 이를 효율적으로 관리하여 새 스레드 생성에 따른 오버헤드를 줄입니다.

3️⃣ 동시성 유틸리티

  • 잠금: ReentrantLock과 같은 고급 잠금 메커니즘은 동기화된 방법보다 더 많은 유연성을 제공하여 시간 제한 및 중단 가능한 잠금을 허용합니다.

  • 원자 변수: java.util.concurrent.atomic 패키지에는 잠금 없는 스레드를 제공하는 원자 클래스(AtomicInteger, AtomicLong)가 포함되어 있습니다.
    안전한 운영.

  • 동기화 장치:다음과 같은 유틸리티를 포함합니다:
    CountDownLatch: 다른 스레드가 완료될 때까지 스레드가 대기하도록 허용합니다.
    작업.
    CyclicBarrier: 공통
    에서 고정된 수의 스레드를 동기화합니다. 장벽 지점.
    세마포어: 특정 숫자
    를 허용하여 리소스에 대한 액세스를 제어합니다. 동시 스레드 수.

4️⃣ 포크/조인 프레임워크

  • 1. 분할 정복 작업의 경우 ForkJoinPool은 작업을 병렬로 처리되는 더 작은 하위 작업으로 분할하며 특히 재귀 알고리즘에 유용합니다.

5️⃣ 완전한 미래를 위한 비동기 프로그래밍

  • CompletableFuture는 비동기식 및 비차단 프로그래밍을 가능하게 하여 복잡한 워크플로에 대한 작업 연결 및 결합을 허용합니다.

스레드 예제 사용

메인 클래스 호출 2개의 다른 스레드

public class ThreadConcurrence {
    public static void main(String[] args) {
        // There is 2 type you have to call thread method
                //1- Extend Thread class
                //1- Implements Runnable class
        // why Implement concept is introduce here
                // because in java multiple thread dose not support that's so why implement class will introduce
                // ex- when u extend (inherit) base call, then at that time this call can not extend another Thread class.
        int n = 10;
        for (int i = 0; i 



Thread1--(스레드 확장)

public class Thread1 extends Thread{
    //If you are extend Thread class then you  most be used run()
    // Because when you start a thread then run() automatically call and run
    public void run(){
        try {
            System.out.println("Thread1 is running now....");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

Thread2--(실행 가능 구현)

public class Thread2 implements Runnable {
    //IF you are implement thread Then run() will be executed.
    // Because when you start a thread then run() automatically call and run
    public void run(){
        try {
            System.out.println("Thread2 is running.......");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

결론 :

이러한 도구와 프레임워크를 활용함으로써 고급 Java 멀티스레딩을 통해 동시 작업을 원활하게 처리할 수 있는 확장 가능한 고성능 애플리케이션을 구축할 수 있습니다.

더 많은 통찰력을 얻으려면 Linkedin과 GitHub에서 심층적인 예제와 코드 샘플을 언급해 주세요! 특정 조정이 필요한 경우 알려주시기 바랍니다.

링크드인: https://www.linkedin.com/in/pravanjan-17p/

GitHub: https://github.com/Prabhanjan-17p

릴리스 선언문 이 글은 https://dev.to/pravanjan17p/thread-concurrency-in-java-idb?1에서 복제됩니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3