yield() 메서드란? yield() 메서드는 현재 실행 중인 스레드가 CPU를 양보하여 다른 스레드가 실행될 수 있도록 하는 메서드이다. 메서드를 호출한 스레드는 RUNNABLE 상태를 유지하면서 CPU를 양보하기 때문에 만약 양보할 스레드가 없다면 스레드가 다시 실행될 수 있다. yield() 예제public class YieldMethod { public static void main(String[] args) throws InterruptedException { Printer printer = new Printer(); Thread printerThread = new Thread(printer, "printer"); printerThread.start(..
버퍼 이란? 버퍼(Buffer) 메모리는 데이터를 일시적으로 저장하는 메모리 공간이다. 주로 데이터의 입출력 속도 차이를 조정하고, 효율적인 데이터 처리를 돕기 위해 사용된다. 버퍼 메모리가 필요한 이유?속도 차이 조정: CPU, RAM, 저장 장치(SSD, HDD)의 데이터 처리 속도가 다르기 때문에 버퍼를 사용하여 빠른 장치와 느린 장치 간의 속도 차이를 완충할 수 있다.데이터 손실 방지: 버퍼를 사용하면 데이터를 안정적으로 저장하고 순차적으로 전달할 수 있기 때문에 버퍼가 없을 경우 데이터가 빠르게 도착하거나 늦게 도착할 수 있어서 손실이 발생할 수 있는데 이를 방지한다.일괄 처리 가능: 프린터의 예를 들자면 프린터는 한 글자씩 출력하는 것이 아니라, 일정량의 데이터를 버퍼에 저장한 후 한꺼번에 ..
Object 객체의 wait(), notify(), notifyAll() 메서드란? sychronized를 사용할 때 락을 획득하지 못하여 무한 대기하는 경우에 Object 메서드 내 wait(), notify(), notifyAll()를 활용하여 해결할 수 있다.wait(): 현재 스레드가 가진 락을 반납하고 대기(WAITING)한다. 현재 스레드가 sychronized 블록이나 메서드에서 락을 소유하고 있을 때만 호출할 수 있다. 호출 후 다른 스레드가 락을 획득할 수 있고, 대기 상태로 전환된 스레드는 다른 스레드가 notify(), notifyAll()을 호출할 때까지 대기 상태를 유지한다.notify(): 대기 중인 스레드 중 하나를 깨운다. notify()는 sychronized 블록이나 메서..
컨트롤러 객체 없이 뷰에 요청 전달하기 웹 애플리케이션에서 요청이 오면 그에 해당하는 컨트롤러 객체가 필요하다. 하지만 단순 페이지만 사용자에게 보여주기 위해서는 굳이 컨트롤러 객체가 필요하지 않을 수 있다. 아래 예제를 통해 알아보았다. 예제WebConfig.java@Configurationpublic class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { // 요청 url: / registry.addViewController("/").setViewName("home"); // 요청 url: /no-view, 요청 페이지 없음 re..