이펙티브자바 2

[effective-java] 동시성

[11장. 동시성] 스레드는 여러 활동을 동시에 수행할 수 있게 해준다. 단일 스레드 프로그래밍보다 동시성 프로그래밍은 어렵다. 공유중인 가변 데이터는 동기화해 사용하라 synchronized 키워드는 메소드나 블록을 한번에 한 스레드씩 수행하도록 보장한다. (=synchronized가 붙으면 단 하나의 스레드만 실행가능) 동기화는 배타적 실행뿐 아니라 스레드 사이의 안정적인 통신에 꼭 필요하다. Thread.stop은 사용하지 말자 쓰기와 읽기 모두가 동기화되지 않으면 동작을 보장하지 않는다. 이 문제들을 피하는 가장 좋은 방법은 가변 데이터를 공유하지 않는 것이다. (가변 데이터는 단일 스레드에서만 쓰도록 하자) 여러 스레드가 가변 데이터를 공유한다면 그 데이터를 읽고 쓰는 동작은 반드시 동기화해야 ..

Dev/Java 2020.01.15

[effective-java] 일반적인 프로그래밍 원칙

[9장. 일반적인 프로그래밍 원칙] 1. 지역변수의 범위를 최소화하라 - 지역변수의 범위를 줄이는 가장 강력한 기법은 가장 처음 쓰일 때 선언하기 지역번수의 범위는 선언된 지점부터 그 지점을 포함한 블록이 끝날 때 까지. - 거의 모든 지역변수는 선언과 동시에 초기화. try-catch문은 이 규칙에서 예외. 변수를 초기화하는 표현식이 검사예외를 던질 가능성이 있을 경우 try 블록안에서 초기화. 예외가 블록을 넘어 메소드까지 전파할 수 있으므로) 변수 값을 try 블록 바깥에서도 사용해야한다면 try 블록 앞에서 선언. 반복문에서는 반복변수의 범위가 반복문의 몸체 그리고 for 키워드와 몸체 사이의 괄호 안으로 제한된다. 반복 변수의 값을 반복문이 종료된 이후에 써야 하는 상황이 아니라면, while문..

Dev/Java 2020.01.14
반응형