본문 바로가기

728x90

분류 전체보기

(130)
wait()과 notify(), notifyAll() 멀티 쓰레드로 구성된 프로세스에서 임계 영역을 보호하기 위해, 즉 쓰레드의 동기화를 위해 synchronized 키워드를 활용합니다. 혹시 synchronized에 대해서 개념을 알고 싶으신 분들은 아래 포스팅을 참고해 주세요! https://silver-programmer.tistory.com/entry/synchronized%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%93%B0%EB%A0%88%EB%93%9C%EC%9D%98-%EB%8F%99%EA%B8%B0%ED%99%94 synchronized를 이용한 쓰레드의 동기화 이번 포스팅은 쓰레드의 동기화를 위한 synchronized에 대하여 작성하였습니다. 싱글 쓰레드가 아닌 멀티 쓰레드로 프로세스를 구성할 때, 같은 자..
synchronized를 이용한 쓰레드의 동기화 이번 포스팅은 쓰레드의 동기화를 위한 synchronized에 대하여 작성하였습니다. 싱글 쓰레드가 아닌 멀티 쓰레드로 프로세스를 구성할 때, 같은 자원을 공유해서 작업을 하게 됩니다. 따라서 서로의 작업에 영향을 미치게 되고 이로 인해 의도했던 것과는 다른 결과를 얻을 수 있게 되는 문제점이 있습니다. 아래 예시를 통해 어떤 문제점이 발생하는지 확인해 보겠습니다. public class Main { public static void main(String[] args) { Runnable r1 = new Thread_0(); new Thread(r1).start(); new Thread(r1).start(); } } class Thread_0 implements Runnable { TargetInstan..
제네릭(Generic) 타입의 형변환 이번 포스팅에서는 제네릭 타입에서는 어떤 형변환이 가능하고 불가능한지에 대해서 알아보겠습니다. 1. 제네릭타입과 원시 타입끼리의 형변환 아래의 코드처럼 제네릭타입과 원시 타입끼리는 형변환이 가능하지만 경고가 발생합니다. class Box {} public class Main { public static void main(String[] args) { Box box = new Box(); Box stringBox = new Box(); box = (Box)stringBox; // 가능, but 경고 발생 stringBox = (Box) box; // 가능, but 경고 발생 } } 2. 제네릭 타입 간의 형변환 대입된 타입이 같은 제네릭 타입끼리는 당연히 형변환이 가능합니다. 그렇다면 다른 제네릭 타입 간..
Thread 실행 제어 여러 thread가 실행될 때 Thread 클래스에서 제공하는 다양한 메서드를 통해 쓰레드들끼리의 실행 순서를 정하거나, 실행을 일시정지시키는 등 실행 제어가 가능합니다. 이번 포스팅은 쓰레드 실행 제어에 관련 있는 메서드에 대해서 알아보겠습니다! Thread 실행 제어 메서드 종류 메서드 설명 static void sleep(long millis) static void sleep(long millis, int nanos) 지정된 시간동안 쓰레드를 일시정지 시킵니다. 지정한 시간이 지나면 자동적으로 다시 실행대기상태가 됩니다. (millis: 1000분의 일초, nanos:10억분의 일초) void join() void join(long millis) void join(long millis, int na..
백엔드 개발자를 위한 도서 리스트 (계속 업데이트 할 예정입니다!!) 아래 있는 책들은 제가 미래에 꼭 읽어봐야 할 책 리스트라고 생각해서 기록해두었습니다. 참고하셔서 도서 선정에 도움이 되시길 바랍니다~ [좋은 코드 작성을 위한 책] 1. [코드 컴플리트2: 더 나은 소프트웨어 구현을 위한 실무 지참서] - 좋은 코드 작성법을 알려주는 기본적인 책 https://wikibook.co.kr/code-complete-2-ebook/ Code Complete 코드 컴플리트 2 (ebook): 더 나은 소프트웨어 구현을 위한 실무 지침서 《Code Complete 2》는 소프트웨어 구현을 둘러싼 다양한 비유부터 기초적인 프로그래밍, 시스템 구축, 소프트웨어 장인정신에 이르기까지 소프트웨어 업계에 종사하는 분이라면 누구나 읽어야 할 wikibo..
제네릭(Generic)이란? 자바의 제네릭(Generic)은 다양한 타입의 객체를 다루는 메서드나 컬렉션 클래스에 컴파일 시 컴파일 체크를 해주는 기능을 제공해 줍니다. 컴파일 시에 타입 체크를 해주기 때문에 객체의 타입 안정성을 높이고 형변환을 할 필요가 없어 편리합니다. 즉, 타입 안정성을 제공해 주기 때문에 의도하지 않은 타입의 객체가 저장되는 것을 방지하고, 저장된 객체를 꺼내올 때 잘못 형변환 되는 것을 막아줍니다. 이번 포스팅은 자바의 제네릭에 관한 내용을 폭넓게 다뤘습니다. 제네릭 자체가 내용이 많다 보니 이해하기가 어려웠는데 이번 포스팅을 보고 도움이 되길 바랍니다!! 제네릭 클래스 선언 제네릭 클래스는 아래와 같이 선언하면 됩니다. public class Box { T item; void setItem(T item)..
Thread 구현과 실행 (Runnable vs Thread) 이번 포스팅은 Thread를 구현하는 방법 2가지와 Thread의 start()와 run() 메서드의 차이점에 대하여 포스팅해 보았습니다. Thread 생성 1. Thread 클래스 상속 선언 class Thread_1 extends Thread{ @Override public void run(){ for(int i=0;i
자바의 애너테이션(Annotation) 애너테이션이란, 주석처럼 프로그래밍 언어에 영향을 미치지는 않으면서도 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킴으로써 다른 프로그램에게 유용한 정보를 제공할 수 있는 기능을 제공하는 '메모'라고 할 수 있습니다. 이번 포스팅은 자바에서 제공하는 애너테이션에 대해서 알아보겠습니다. 자바에서 기본적으로 제공하는 애너테이션 중 대표적인 종류는 아래와 같습니다. 애너테이션 설명 @Override 컴파일러에게 오버라이딩하는 메서드라는 것을 알려줍니다. @Deprecated 앞으로 사용하지 않을 것을 권장하는 대상에 붙입니다. @SuppressWarnings 컴파일러의 특정 경고메시지가 나타나지 않도록 해줍니다. @FunctionalInterface 함수형 인터페이스임을 나타냅니다. 그리고 자바에서..

728x90
반응형