본문 바로가기

날리지/언어

[자바] (멀티쓰레딩 4) 쓰레드에서 값 반환 쓰레드에서 값 반환 하기쓰레드로부터 값을 리턴 받는 방법을 살펴보자.일반 쓰레드의 경우를 살펴본 후 Executor의 경우도 살펴보자.1. 일반 쓰레드의 경우일반 쓰레드에서 리턴 값을 얻는 방법은 아래 두 가지가 있다.블록킹: synchronized를 이용해 변경 시점까지 락을 거는 방법논블록킹: Observer Pattern을 이용하는 방법1.1 블록킹synchronized를 이용해 변경 시점까지 락을 거는 방법으로 데이터를 읽는 메소드를 락을 걸고 쓰레드가 실행되는 마지막에 락을 푼다. 그 예는 다음과 같다. this.wait()로 기다리고 this.notifyAll()로 해제한다. done 변수를 이용해 synchronized로 무조건 들어가지 않도록 했으며, done은 volatile로 선언해서 .. 더보기
[자바] (멀티쓰레딩 3) 쓰레드 이름 설정 Java 쓰레드 이름 설정디버깅의 편리를 위해 Java 쓰레드에 이름을 부여하는 것이 좋다. 그 방법을 알아보자.1. 실행 시 쓰레드 이름 부여하기run() 메소드안에서 Thread.currentThread().setName()을 이용해서 쓰레드 이름을 부여한다. 이 방식은 일반 thread는 물론이고 Executor에도 동일하게 적용되는 방식이다.import java.util.concurrent.TimeUnit; public class NamingThreadsFirstWay { public static void main(String argc[]) { System.out.println("Main thread starts here..."); Thread t = new Thread(new MyThreadTa.. 더보기
[자바] Java - (멀티쓰레딩 2) Executor 기본 1. 개요Java의 일반 쓰레드 구동 방식은 다양하지만, Executor는 단지 하나의 방식으로 간단하게 쓰레드를 구동할 수 있다. 아래의 두 가지를 하면 된다.태스크를 정의한 클래스의 생성Executor Service에 태스크 객체를 제공Executor 프레임웍은 다음과 같은 특징을 지닌다.쓰레드 풀을 사용무거운 쓰레드는 미리 할당 가능태스크와 쓰레드를 생성하고 관리하는 것을 분리쓰레드 풀안의 쓰레드는 한번해 하나씩 여러 태스크를 실행태스크 큐를 이용해 태스크를 관리Executor Service를 더이상 필요 없으면 중지Executor Service가 멈추면 모든 쓰레드도 중지2. 주요 클래스와 인터페이스Executor 인터페이스: 태스크와 쓰레드를 분리하고 실행을 담당void execute(Runna.. 더보기
[자바] 멀티쓰레드 환경에서 디버깅하기 -- 멀티쓰레드 환경에서 자바 디버깅하기 멀티 쓰레드 환경에서는 여러 개의 쓰레드를 제어 해야 하기 때문에, 디버깅이 어렵다. 이클립스에서는 이를 위한 디버깅 툴을 제공한다. 정상으로 메인 쓰레드를 실행시켜 멀티 쓰레드 디버깅 환경에 들어 간 뒤, 한 쓰레드가 wait상태에 들어가면, 해당 쓰레드를 suspend 시키고 다음 쓰레드를 이용 하여 디버깅을 수행하면 된다. 위에서 쓰레드가 Wait상태에 들어가면, Resume옆의 Suspend버튼이 활성화 된다. 활성화된 Suspend 버튼을 클릭하고 다시 새로운 쓰레드로 Resume하면, 다음 쓰레드의 디버깅을 수행할 수 있다. 더보기
MIT 6.00 컴퓨터 공학과 프로그래밍(Python) 오픈 코스 MIT 6.00 컴퓨터 공학과 프로그래밍(Python) 오픈 코스약 1년 전 by hakawatiMIT 공대에서 컴퓨터 공학과 프로그래밍 소개에 관한 강의가 유튜브에 올라왔다. 최근에 업로드된 강의가 있음에도 이 강의들을 정리한 이유는 아무래도 한글 자막이 잘 되어 있기 때문이다.출처 : MIT OpenCourseWare YouTube교수 : Eric Grimson, John Guttag제 01강 - 연산이란 - 데이터 타입, 연산자 및 변수 소개제 02강 - 연산자와 피연산자 - 분기문, 조건문 그리고 반복문제 03강 - 공통 코드 패턴, 반복 프로그램제 04강 - 기능을 통한 분해 및 추상화, 재귀 소개제 05강 - 부동 소수점, 계통적 명세화, 루트 찾기제 06강 - 이분법, 뉴턴/랩슨, 그리고 리.. 더보기
Guava 를 사용해야 하는 5가지 이유 얼마전에 올렸던 List에서 중복요소 제거한 List로 만들기에서 많은 댓글이 오가면서 반농담삼아 그냥 Guava를 쓰자라는 결론(?)에 이르르면서 최근에 Guava를 좀 찾아서 써보면서Insightful Logic이라는 런던의 스타트업회사의 회사의 블로그에서 작성한 5 Reasons to use Guava라는 글을 보고 Guava를 파악해보기 위해서 번역한 글을 포스팅합니다. 이 내용은 Insightful Logic에 번역허락을 받고 올립니다. Guava는 구글이 작성한 자바 오픈소스 라이브러리입니다. 개발자라면 이전에 한번정도는 스스로 작성해 보았거나 필요했지만 작성할 시간이 없었을만한 유용한 유틸리티 함수와 클래스들을 다양하게 제공하고 있습니다. 여기에 Guava를 사용하면 좋은 5가지 이유가 있습.. 더보기