Back-end146 Java concurrent 함수 - invokeAll() java.util.concurrent에 있는 invokeAll() 함수에 대해서 얘기해보고자 합니다. ExecutorService에서 제공하는 함수로 callable list를 넘겨서 한꺼번에 수행하는 함수 입니다. 이 함수는 submit()이나 CompletionService와는 사용법이 좀 다르기에 예제로 간단히 설명해 보고자 합니다. invokeAll()의 간단한 사용 예제 ExecutorService에서는 submit(), execute()이외에도 다양한 함수를 제공합니다. 그중에서 테스트해 볼 함수는 invokeAll()이며 이 또한 두가지 형태가 존재합니다. Callable list를 받아 전부 끝나야 함수가 종료되는 형태 Callalbe list를 받고 timeout을 받아, 시간안에 끝나지.. 2021. 5. 17. [JSP] 이메일 라이브러리 java mail + activation 라이브러리 파일 안녕하세요 꼬바리 입니다. 요즘은 jsp를 많이 사용 하지않지만 연습겸 공부겸 회원가입시 이메일 보내는 코드를 공부하였습니다. 오라클 아이디가 있으신 분들도 있지만 저 처럼 가입이 귀찮아 검색 하실 분들을 위해 파일 첨부 하겠습니다. 압축을 푸시고 lib폴더로 copy 하면 됩니다 (많은 분들이 이렇게 사용) 회원가입시 이메일 보내는 코드는 아직 미완성이니 나중에 포스팅 하도록 하겠습니다. (사실 너무 큰 오류가 계속 나서 저는 실패했습니다. 타임아웃 오류 해결하면 다음 오류.. 오류의 연결고리) 2021. 5. 12. [Java] BufferedReader/BufferedWriter 자바 입출력 [자바 입출력 함수] BufferedReader / BufferWriter BufferedReader/BufferedWriter은 이름처럼 버퍼를 이용해서 읽고 쓰는 함수입니다. 이 함수는 버퍼를 이용하기 때문에 이 함수를 이용하면 입출력의 효율이 비교할 수 없을 정도로 좋아집니다. 한 번 거쳐가므로 느릴거 같은 데 왜 빠르냐고요? 하드디스크는 원래 속도가 엄청 느립니다. 하드뿐만 아니라 키보드나 모니터와 같은 외부 장치와의 데이터 입출력은 생각보다 시간이 걸리는 작업이예요. 버퍼링 없이 키보드가 눌릴 때마다 눌린 문자의 정보를 목적지로 바로 이동시키는 것보다 중간에 메모리 버퍼를 둬서 데이터를 한데 묶어서 이동시키는 것이 보다 효율적이고 빠릅니다. 그냥 전송하게 되면 CPU와 성능 갭이 많이 나서 비효.. 2021. 5. 12. [Java] Process, ProcessBuilder 자바에서 프로세스 다루기 1. 자바에서의 Process Runtime 클래스는 자바 런타임 환경을 캡슐화 한다. Runtime 클래스는 new 할 수 없지만 Runtime.getRuntime ()이라는 static 메소드를 이용하여 현재 실행중인 프로그램의 Runtime클래스에 대한 참조를 얻을 수 있다. Runtime의 exec() 메소드를 통해 프로그램을 실행 시키고 Process에 대한 참조를 얻는다. ProcessBuilder.start() 메서드를 통해 Process에 대한 참조를 얻을 수도 있다. Process 클래스는 프로세스에서 입력, 출력을 수행( getInputStream, getOutputStream, getErrorStream ), 프로세스가 완료 될 때까지 대기( waitFor ), 프로세스의 종료 상태를.. 2021. 5. 11. [Java] Java에서 ProcessBuilder를 이용하여 OS Command 실행 1. 개요 자바 코드 상에서 OS 명령어를 실행하기 위한 방법 중 ProcessBuilder를 이용하는 예를 살펴본다. 2. 사전지식 OS 명령어 실행을 위한 Arugument는 List 형태로 전달한다. 예를 들면 다음과 같다. List command = new ArrayList(); command.add("ls"); command.add("-l"); command.add("/"); 3. 예제 코드 ProcessBuilder processBuilder = new ProcessBuilder(command); try { System.out.println("run " + StrUtil.getListString(command)); Process process = processBuilder.start(); Bu.. 2021. 5. 11. [Java] ProcessBuilder 클래스 - 운영체제 프로세스 생성 이전 버전에서는 Runtime.exec()을 이용해 프로세스를 실행할 수 있습니다. 그런데 이 방법은 When Runtime.exec() won't에서도 소개 됐듯이 표준 입력과 출력에 대한 제한된 버퍼 사이즈로 인해 하위 프로세스가 block 되거나 데드락이 되기도 하는 문제가 있었습니다. 자바 JDK 7 이상에서는 이러한 문제점을 해결 하고자 Proccess Builder 클래스가 소개됩니다. 이 클래스는 운영체제 프로세스 생성할 때 사용합니다. Process Builder 클래스 인스턴스에는 프로세스를 제어할 때 필요한 유용한 속성을 제어합니다. 예를 들어 start() 메서드는 입력 받은 커맨드를 실행해 새로운 프로세스를 생성 합니다. 생성자의 역할 ProcessBuilder(List 커맨드): .. 2021. 5. 11. [Java] ExecutorService를 사용하는 방법 java.util.concurrent.Executors와 java.util.concurrent.ExecutorService를 이용하면 간단히 쓰레드풀을 생성하여 병렬처리를 할 수 있습니다. ExecutorService 생성 Executors는 ExecutorService 객체를 생성하며, 다음 메소드를 제공하여 쓰레드 풀을 개수 및 종류를 정할 수 있습니다. newFixedThreadPool(int) : 인자 개수만큼 고정된 쓰레드풀을 만듭니다. newCachedThreadPool(): 필요할 때, 필요한 만큼 쓰레드풀을 생성합니다. 이미 생성된 쓰레드를 재활용할 수 있기 때문에 성능상의 이점이 있을 수 있습니다. newScheduledThreadPool(int): 일정 시간 뒤에 실행되는 작업이나, 주.. 2021. 5. 11. [Java] Future 사용 방법 Future는 비동기적인 연산의 결과를 표현하는 클래스입니다. Future를 이용하면 멀티쓰레드 환경에서 처리된 어떤 데이터를 다른 쓰레드에 전달할 수 있습니다. Future 내부적으로 Thread-Safe 하도록 구현되었기 때문에 synchronized block을 사용하지 않아도 됩니다. 예제를 보면 더 쉽게 이해가 됩니다. 간단한 Future 예제 아래 예제에서는 두개의 Thread가 생성되어있고, Future를 이용하여 어떤 쓰레드에서 처리된 데이터를 다른 쓰레드로 전달합니다. ExecutorService executor = Executors.newSingleThreadExecutor(); Future future = executor.submit(() -> { System.out.println(L.. 2021. 5. 11. [Java] Collection이란? Collection 개념, Collection Framework 구조 Collection Framework 이란? 1. collection 2. map >> 크게 이 두 가지를 만들기 위한 인터페이스들, 인터페이스를 구현한 클래스들, 그리고 관련 알고리즘. ( A framework, by definition, is a set of interfaces that force you to adopt some design practices.) Framework는 쉽게 말하면 인터페이스 집합으로, 개발자의 설계 구현을 도와주는 밑바탕이라 생각하면 됨. 즉, collection framework는 collection 자료구조들을 구현할 수 있도록 도와주는 인터페이스 도구들이다. 우리는 이제 이 framework에서 깔아준 밑바탕 인터페이스들과 이걸 implement한 클래스들(Arra.. 2021. 5. 11. 이전 1 ··· 7 8 9 10 11 12 13 ··· 17 다음 728x90 반응형