본문 바로가기
728x90
반응형

Java46

[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] 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.
[Java] 문자 Stream : InputStreamReader / OutputStreamWriter 문자 Stream : InputStreamReader / OutputStreamWriter Stream은 바이트 단위는 바이트 단위로 연결하고 캐릭터 단위는 캐릭터 단위로 연결하는 것이 원칙이다. 하지만 캐릭터는 결국 바이트 2개가 모여서 구성한 데이터로 볼 수 있다. 따라서 두 가지 서로 다른 기준을 호환할 수 있는 통로가 제공되어야 한다. 이 두 클래스는 Stream 이라는 말고 Reader/Writer 라는 말을 동시에 가지고 있다. 결론적으로 이 두 클래스는 둘 사이의 연결을 담당한다고 볼 수 있다. Stream : 바이트 단위의 입출력 Reader/Writer : 캐릭터 단위의 입출력 InputStreamReader / OutputStreamWriter는 바이트 스트림에서 문자 스트림으로, 또는.. 2021. 5. 11.
[Java] StringBuilder 사용법 및 사용하는 이유 StringBuilder 사용법 및 사용하는 이유 자바에서 문자열하면 자연스럽게 String이 떠오른다. String은 소위 불변(immutable)객체라고 한다. String str1 = "abc";, String str2 = "def"; 2개의 String객체가 있을 때, 만약 str1 + str2;와 같은 연산을 하게 되면 새로운 String을 생성한다. 즉, String객체와 String객체를 더하는(+)행위는 메모리 할당과 메모리 해제를 발생시키며 더하는 연산이 많아진다면 성능적으로 좋지 않다. 그래서 나온 것이 StringBuilder이다. 이름만 봐도 String 잘 만들게(?) 생겼다. StringBuilder는 String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라 기존의 데.. 2021. 5. 11.
[Java] 보조 스트림 : 문자 변환 보조 스트림 : OutputStreamWriter OutputStreamWriter : 바이트 출력 스트림에 연결되어 문자 출력 스트림인 Writer로 변환시키는 보조 스트림. Writer w = new OutputStreamWriter(바이트출력스트림); 예제) import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; public class OutputStreamWriterExample { public static void main(String[] args) throws Exception { FileOutputStream fos = new File.. 2021. 5. 11.
[Java] java.io.FileOutputStream 주요 메소드 [ FileOutputStream ] FileInputStream과 마찬가지로 java.io의 가장 기본이 되는 파일 입출력 클래스 출력 스트림(통로)을 생성해줌 사용법은 간단하지만, 버퍼를 사용하지 않기 때문에 느림 속도 문제를 해결하기 위해 버퍼를 사용하는 다른 클래스와 같이 쓰는 경우가 많음 외부 리소스 입출력에 대한 개념과 설명은 아래 링크글을 참조하시면 됩니다. 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_io / nio / nio2 [1/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.io [2/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.nio [3/3] [ 생성자 ] new FileOutpu.. 2021. 5. 11.
728x90
반응형