thread run()과 tnread start()의 차이 run() 메서드와 start() 메서드는 Java 에서 멀티스레딩을 구현하는데 사용되는 메서드입니다. run() 메서드 run() 메서드는 Thread 클래스 또는 Runnable 인터페이스를 구현한 클래스에서 오버라이드하여 스레드가 실행할 코드를 정의함 일반적인 메서드 처럼 직접 호출이 가능함 이렇게 호출하는 경우에는 단순히 해당 메서드를 실행하는 것이며, 멀티스레딩을 활용하는 것이 아님 따라서 run() 메서드를 직접 호출하는 것은 일반적으로 스레드를 생성하여 별도로 생성하는 것보다 성능면에서 이점이 없다!! 스레드를 생성하고 실행하기 위해서는 start() 메서드를 사용해야함 start() 메서드 start() 메서드는 Thread 클래스..
sleep() 과 wait() 의 차이점 sleep() Thread.sleep() 은 java.lang.Tread 클래스의 정적 메서드로, 현재 실행 중인 스레드를 일시적으로 지연시키는데 사용됨 sleep() 은 주로 프로그램의 특정 시간 동안 지연을 발생시키기 위해 사용됨 예 ) 주어진 시간 동안 대기하고 일정 시간마다 작업을 수행하는 등의 기능을 구현할 때 유용함 인터럽트가 발생하거나 지정된 시간이 경과하면 스레드가 실행을 재개함 락을 해제하지않아 다른 스레드가 해당 스레드가 사용 주아니 공유 자원에 접근할 수 없음 try { // 5초 동안 현재 스레드를 일시 중지합니다. Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrac..
스레드(Thread) 는 프로세스 내에서 실행되는 작은 실행 단위로, 프로세스의 자원을 공유하면서 병렬로 실행될 수 있도록 합니다. 스레드는 여러가지 상태를 가지며, 이는 스레드의 실행 상태에 따라 다양하게 변화합니다. [ 스레드의 다양한 상태 ] 1. 생성(New) 스레드가 아직 시작되지 않은 초기 상태 스레드 객체가 생성되었지만 start() 메서드를 호출하여 실행되기 전 상태 2. 실행(RUNNABLE) 스레드가 실행 가능한 상태 실행 가능한 스레드는 프로세서의 할당을 기다리고 있으며, 스케줄러에 의해 선택되어 실행될 준비가 되어있음 3. 대기(BLOCKED/WAITING/TIMED_WAITING) 스레드가 다른 이벤트를 기다리는 상태 스레드가 락을 얻지 못한 상태나 특정 조건을 만족하기 위해 일시..
"Runnable"과 "Callable"은 모두 Java 프로그래밍 언어에서 사용되는 인터페이스로, 스레드를 생성하고 실행하기 위해 사용됩니다. 하지만 각각의 차이점이 있습니다. Runnable Java 에서 멀티스레드를 구현하기 위해 사용되는 인터페이스 Runnable 인터페이스를 구현하는 객체는 'run()'메서드를 구현해야 함 run() 메서드 안에는 스레드가 실행할 코드가 들어감 run() 메서드를 실행하는 스레드는 start() 메서드를 호출하여 시작할 수 있음 public class MyRunnable implements Runnable { @Override public void run() { // 스레드가 실행할 작업을 여기에 구현 } public static void main(String[..
데몬 스레드(Demon thread) 컴퓨터 프로세스 내의 백그라운드에서 싱행되는 스레드 주로 백그라운드 작업을 처리하거나 다른 스레드들을 돕는 역할 데몬 스레드는 일반 스레드와 다르게, 해당 프로세스의 모든 일반 스레드가 종료되면 자동적으로 종료됨 시스템 리소스를 관리하거나 백그라운드에서 주기적으로 실행되어 작업을 처리함 예 ) 웹 서버는 메인 스레드에서 클라이언트 요청을 처리하는 동안 데몬 스레드가 로그 파일을 유지하거나 쓰레기 수집과 같은 자동화된 작업을 처리하는데 사용됨 데몬 스레드는 일반 스레드의 보조적인 역할을 하며, 일반 스레드들이 작업을 마친 후에도 백그라운드에서 동작하는데 사용됨 언어나 프레임워크에 따라 데몬 스레드를 생성하는 방법이 다를 수 있으며, 대부분의 프로그래밍 언어와 스레드 지..
스레드(Thread)와 프로세스(Process)의 차이 스레드(thread)와 프로세스(process)는 컴퓨터에서 동작하는 실행 단위입니다. 하지만 각각은 서로 다른 특성과 목적을 가지고 있습니다. 이들의 주요 차이점은 다음과 같습니다 [ 정의 ] 프로세스 " 실행중인 프로그램으로, 메모리에 로드되어 독립적으로 실행되는 작업 단위 " 각각의 프로세스는 자체 메모리 공간과 시스템 자원(파일, 레지스터 등)을 가지며, 다른 프로세스와는 독립적으로 실행됨 스레드 " 프로세스의 자원을 공유하면서 프로세스 내에서 동작하는 작은 실행 단위 " 한 프로세스 내에서 여러개의 스레드가 동시에 작업을 수행할 수 있으며, 이들은 같은 프로세스 내의 주소 공간과 자원에 접근할 수 있음 + ) 추가 thread 개념 - 애플..
Multi-threading " 하나의 프로세스 안에서 여러 개의 실행 스레드를 동시에 동작시키는 프로그래밍 기법 " 스레드는 프로세스 안에서 독립적으로 실행되는 작은 작업 단위입니다. 각 스레드는 프로세스 자원을 공유하면서 동시에 실행될 수 있으므로, Multi-threading 을 사용 하면 열 작업을 동시에 처리할 수 있습니다. 예 ) 웹 브라우저에서는 여러 개의 탭을 동시에 열어서 각 탭에서 병렬로 웹 페이지를 로딩하는 것이 Multi-threading 의 예 입니다 그러나 Multi-threading 은 디버깅이 까다로울 수 있어 공유 자원에 접근하는 경우 동기화 문제를 고려하여 사용해야 합니다. 병렬( Parallelism ) 동시에 여러 작업을 실행하는 개념 다중 코어 프로세서를 사용하는 현..