전체 글 245

📌 스레드에 여러가지 상태가 있다???

스레드: 프로그래밍에서 동시에 실행되는 일련의 작업 단위 -New (생성됨): 스레드가 생성되고 아직 실행되기 전의 상태 이 상태에서는 아직 스레드가 실행되지 않았으므로, 아래와 같은 코드로 스레드를 생성할 수 있다 Thread thread = new Thread(); -Runnable (실행 가능): 스레드가 실행을 기다리는 상태 스레드가 실행을 시작하려면 CPU 시간 할당을 받아야한다 만약 여러 개의 스레드가 실행 가능한 경우, 스케줄러에 의해 스레드가 선택되고 실행될 수 있다 thread.start(); -Running (실행 중): 스레드가 CPU 시간을 할당받고 실제로 실행 중인 상태 스레드는 Run 메소드 내에서 실행되는 작업을 수행하며, 실행이 완료되기 전에는 Running 상태를 유지한다 ..

📌 runnable과 callable의 차이는 무엇일까??

Runnable: Runnable은 Java 1.0에서 도입된 함수형 인터페이스 동시에 실행될 수 있는 작업을 나타내지만 결과를 반환하지 않는다 Runnable의 run() 메서드는 인자를 받지 않고 void를 반환한다 run() 메서드 내에서 발생한 예외는 run() 메서드 외부에서 잡거나 처리할 수 없다 Runnable runnable = () -> { // 작업 수행 System.out.println("Runnable 작업 실행"); }; Thread thread = new Thread(runnable); thread.start(); Callable: Callable은 java.util.concurrent 패키지의 일부로 Java 1.5에서 도입된 함수형 인터페이스 동시에 실행될 수 있는 작업을 나..

SQL 46(서브쿼리 사용하기 / FROM 절의 서브쿼리 + SELECT 절의 서브쿼리)

From 절의 서브쿼리를 in the view라고 한다 where절에서는 분석함수를 사용 할 수 없다 ..! => from절에 서브 쿼리문 사용해 서브 쿼리문이 먼저 실행되고 출력된 결과를 하나의 집합으로 만들기 Select절의 서브쿼리는 서브쿼리가 Select 절로 확장되었다 해서scalar 서브쿼리라 불린다 스칼라 서브쿼리는 출력되는 행 수만큼 반복되어 실행

SQL 2023.07.19

📌 스레드 만드는 방법!!!!

Thread 클래스를 상속받기 Thread 클래스를 상속받아 새로운 클래스를 정의하고, run() 메소드를 오버라이딩하여 스레드가 실행할 작업을 정의한다. 그리고 해당 클래스의 객체를 생성하고 start() 메소드를 호출하여 스레드를 시작한다 class MyThread extends Thread { public void run() { // 스레드가 실행할 작업 정의 } } public class Main { public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); } } Runnable 인터페이스를 구현하기 Runnable 인터페이스를 구현하는 클래스를 정의하고, run() 메소드를 구현하여 스레드가..

📌 데몬 스레드는 무엇일까??

데몬스레드는 백그라운드에서 실행되는 스레드 → 일반적인 스레드와는 다르게, 데몬스레드는 메인 스레드가 종료되면 자동으로 종료된다 데몬스레드는 보조적인 작업을 수행하거나 백그라운드에서 지속적으로 실행되어야 하는 작업을 처리하는 데 사용된다 ex) 가비지 컬렉션, 자동 저장, 로그 기록 등의 작업 데몬스레드는 setDaemon(true) 메서드를 사용하여 생성할 수 있다. 이 메서드를 호출하여 스레드를 데몬스레드로 설정하면, 해당 스레드는 메인 스레드가 종료될 때 자동으로 종료된다

📌 스레드와 프로세스의 차이는 뭘까?

프로세스(Process): 프로세스는 운영체제에서 실행되고 있는 프로그램의 인스턴스 각 프로세스는 독립된 메모리 공간을 할당받고, 자신만의 주소 공간을 가지고 실행된다 한 프로세스는 다른 프로세스의 변수나 자료구조에 직접 접근할 수 없다. 프로세스 간에는 프로세스 간 통신(IPC, Inter-Process Communication)을 통해 데이터를 주고받을 수 있다. 프로세스는 여러 개의 스레드로 구성될 수 있다. 프로세스는 운영체제로부터 시스템 자원을 할당받는 작업의 단위 스레드(Thread): 스레드는 프로세스 내에서 실행되는 여러 실행 흐름 한 프로세스 내에서 스레드들은 같은 주소 공간과 자원(힙 공간 등)을 공유하면서 실행된다 같은 프로세스 안에 있는 스레드들은 같은 힙 공간을 공유한다 한 스레드..

🧾 스레드를 재사용해야 하는 이유

스레드가 데드가 되면 사용 못하지만 다시 사용할 수 있게 해주면 되지 않나?? => 실행완료된 스레드는 가비지가 된다 가비지 컬렉터가 가비지가된 스레드 수집하여 해제 시키기 전까지는 그 스레드를 위해 할당된 메모리를 사용 할 수없다 스레드를 매번 만들면 결국 가비지만 계속 늘어나게 되고 => 메모리 낭비!!!!!!!!!! 스레드는 실제 OS가 생성하고, 스레드는 생성하는데 시간이 걸림 스레드를 자주 생성하면 스레드 생성하는데 시간을 많이 소요하게됨!!! sleep()을 이용한 스레드 재활용 방식은 일정 시간이 지난 후 스레드가 작업하게 만드는 방식 스레드가 잠든 사이에 작업할 내용을 설정해두면, 스레드가 깨어났을 때 변경 사항에 따라 작업을 수행한다. 이 방식으로 한 개의 스레드를 재활용하여 작업을 처리..