반응형

Java 4

[Java] 스레드 풀(ThreadPool) 이란? ThreadPool 종류

ThreadPool 이란? 100개의 작업을 비동기적으로 처리해야할 때에, 어떤 방법을 떠올릴 수 있을까? 간단히 스레드를 100개 만들어 처리하는 코드를 작성해보자. public class ExecutorExample { public static void main(String[] args) throws ExecutionException, InterruptedException { Thread thread = new Thread(new Task()); thread.start(); System.out.println(Thread.currentThread() + " hello"); } static class Task implements Runnable { @Override public void run() { t..

Java 2024.03.12

[Java] SLF4J로 예외 로깅하기

이 글에서는 자바에서 SLF4J를 이용하여 예외를 로깅하는 방법에 대해 알아볼 것이다. slf4j-simple API를 이용하도록 하겠다. 일반적으로, 대부분의 예외들은 Logger 클래스의 error() 메서드로 로그를 남긴다. void error(String msg); void error(String format, Object... arguments); void error(String msg, Throwable t); 우선 Logger를 먼저 초기화하도록 하자. Logger logger = LoggerFactory.getLogger(NameOfTheClass.class); 만약 단순히 에러 메시지만을 보여주고 싶다면, 다음과 같이 추가할 수 있다. logger.error("An exception oc..

Java 2024.02.27

[Java] SerialVersionUID 란?

SerialVersionUID는 클래스 버전에 대한 식별자이다. 내가 최초로 만든 Book이라는 클래스는 이 최초의 모습을 유지하지 않고, 개발을 거듭하면서 계속해서 버전업이 될 것이다. 처음에는 title이라는 필드만 있었지만, 나중에는 author, content 등 여러 필드가 추가될 수 있고 또 필요에 따라 추가했던 필드를 삭제하게 될 수도 있다. 이렇게 다양하게 변모할 수 있는 클래스의 버전을 식별하기 위해 SerialVersionUID가 필요하다. class Book implements Serializable { private String title; private String author; private String content; } 위와 같은 형태의 최초(v1)의 Book을 직렬화한 뒤에..

Java 2024.02.20

[Java] Unchecked Exception에 관한 논쟁

Java는 RuntimeException이나 Error와 같은 unchecked exception을 핸들링하도록 강제하지 않기 때문에, 프로그래머들은 unchecked exception만을 던지는 코드를 작성한다거나 RuntimeException을 상속하는 예외만을 만들어 사용하는 등의 유혹에 빠질 수 있다. 이렇게 하는게 프로그래머 입장에서는 편리할 지 모르지만, 이는 예외 처리에 관한 책임을 회피하는 것으로 이어져 결국 해당 클래스를 사용하는 쪽에서 문제가 발생하게 될 수 있다. 왜 Java를 설계한 사람들은 메소드 내부에서 발생할 수 있는 checked exception을 메소드에 명시하도록 강제했을까? 메소드를 호출하는 쪽에서는 해당 메소드가 어떤 예외를 발생시킬 수 있는지를 알아야 이를 어떻게 ..

Java 2024.02.01
반응형