프로그래밍(TA, AA) (269) 리스트형 [자바] Event-Dispatching Thread 이벤트-디스패칭 쓰레드란? GUI 응용 프로그램을 작성할 때에는 이벤트-디스패칭 쓰레드(the event-dispatching thread)를 의식할 필요가 있습니다. GUI 응용 프로그램을 사용할 때 우리들은 버튼을 누른다든지 마우스를 움직인다든지 합니다. 우리들의 그러한 동작에 대응해서 GUI 응용 프로그램 처리가 수행됩니다. "버튼을 누른다" 혹은 "마우스를 움직인다"라고 하는 것은 이벤트(event)라고 부르고 Swing 클래스로서 표현되고 있습니다. 버튼을 누르면 java.awt.event.ActionEvent라는 클래스의 인스턴스가 생성되고 마우스를 움직이면 java.awt.event.MouseEvent라는 클래스의 인스턴스가 생성됩니다. 그리고 각각의 인스턴스는 Swing이 내부에 가지고 있.. [자바] Worker Thread 패턴 worker라는 것은 "일을 하는 사람", "작업자"라는 의미입니다. Worker Thread 패턴에서는 워커 스레드(Worker Thread: 작업자 쓰레드)가 일을 하나씩 가지러 가서 처리를 합니다. 일이 없으면 워커 쓰레드는 새로운 일이 도착할 때까지 기다립니다. Worker Thread를 Background Thread라고 부르는 일도 있습니다. 또한 워커 쓰레드를 여러 개 보유하고 있는 장소에 주목하여 Thread Pool 이라고 부르기도 합니다. ClientThread 클래스의 쓰레드가 Channel 클래스에 일의 request(의뢰)합니다. Channel 클래스의 인스턴스는 워커 쓰레드(WorkerThread) 다섯 명을 맡고 있습니다. 워커 쓰레드는 모두 일의 리퀘스트가 오기를 기다리고 있.. [자바] Guarded-Suspension 패턴 Guarded Suspension 패턴은 쓰레드를 기다리게 하여 인스턴스의 안전성을 지킵니다. 이는 마치 우편 배달원을 현관에서 기다리게 하고 자기의 프라이버시를 지키는 것과 비슷합니다. Guarded Suspension 패턴에는 guarded wait, spin lock 등 여러 가지 명칭이 있습니다. 하나의 쓰레드(ClientThread)가 다른 쓰레드(ServerThread)에 Request 인스턴스를 건네주는 것입니다. 이것은 매우 간단한 쓰레드 간의 통신입니다. 이름 해설 Request 하나의 리퀘스트를 표현한 클래스 RequestQueue 리퀘스트를 순서대로 비축해두는 클래스 ClientThread 리퀘스트를 내주는 클래스 ServerThread 리퀘스트를 받아 해석하는 클래스 Main 동작 .. [자바] 스트림과 병렬 데이터 처리 스트림 거의 모든 자바 애플리케이션은 컬렉션을 만들고 활용합니다. 하지만 컬렉션으로 모든 문제가 해결되는 것은 아닙니다. 예를 들어 리스트에서 고가의 트랜잭션(Transaction)만 필터링한 다음에 통화로 결과를 그룹화해야 한다고 가정해보겠습니다. 다음 코드처럼 많은 기본 코드를 구현해야 합니다. // 그룹화된 트랜잭션을 더할 Map 생성 Map transactionsByCurrencies = new HashMap(); // 트랜잭션의 리스트를 반복 for (Transaction transcation : transactions) { // 고가의 트랜잭션을 필터링 if (transaction.getPrice() > 1000) { // 트랜잭션의 통화 추출 Currency currency = transac.. [자바] 람다 표준 API의 함수 인터페이스 출처: http://palpit.tistory.com/673 자바에서 제공되는 표준 API에서 한 개의 추상 메소드를 가지는 인터페이스들은 모두 람다식을 이용해서 익명 구현 객체로 표현이 가능합니다. 예를 들어 스레드의 작업을 정의하는 Runnable 인터페이스는 매개변수와 리턴값이 없는 run() 메소드만 존재하기 때문에 다음과 같이 람다식을 이용해서 Runnable 인스턴스를 생성시킬 수 있습니다. package lambda; public class RunnableExam { public static void main(String[] args) { Runnable runnable = () -> { for (int i = 0; i < 10; i++) { System.out.println(i); } };.. 이전 1 ··· 26 27 28 29 30 31 32 ··· 54 다음