Java 길찾기/이것이 자바다 썸네일형 리스트형 [Java] 작업 스레드 생성과 실행 멀티 스레드로 실행하는 애플리케이션을 개발하려면 먼저 몇 개의 작업을 병렬로 실행할지 결정하고 각 작업별로 스레드를 생성해야 한다. 어떤 자바 애플리케이션이건 메인 스레드는 반드시 존재하기 때문에 메인 작업 이외에 추가적인 병렬 작업의 수만큼 스레드를 생성하면 된다. 자바에서는 작업 스레드도 객체로 생성되기 때문에 클래스가 필요하다. java.lang.Thread 클래스를 직접 객체화해서 생성해도 되지만, Thread를 상속해서 하위 클래스를 만들어 생성할 수도 있다. Thread 클래스로부터 직접 생성 java.lang.Thread 클래스로부터 작업 스레드 객체를 직접 생성하려면 다음과 같이 Runnable을 매개값으로 갖는 생성자를 호출해야 한다. Thread thread = new Thread(Ru.. 더보기 [Java] 멀티 스레드 개념 프로세스와 스레드 운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스(process)라고 부른다. 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 이것이 프로세스이다. 하나의 애플리케이션은 다중 프로세스를 만들기도 하는데, 예르 들어 Chrome 브라우저를 두 개 실행했다면 두 개의 Chrome 프로세스가 생성된 것이다. 멀티 태스킹(multi tasking)은 두 가지 이상의 작업을 동시에 처리하는 것을 말하는데, 운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메소리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킨다. 예를 들어 워드로 문서 작업을 하면서 동시에 윈도우 미디어 플레이어로 음악을 들을 수 있다. 멀티 태스킹은 꼭.. 더보기 [Java] 기본 API 클래스 - java.time 패키지 자바 7 이전까지는 Date 와 Calendar 클래스를 이용해서 날짜와 시간 정보를 얻을 수 있었다. Date 클래스의 대부분의 메소드는 Deprecated되었고, Date의 용도는 단순히 특정 시점의 날짜 정보를 저장하는 역할만 한다. Calendar 클래스는 날짜와 시간 정보를 얻기에는 충분하지만, 날짜와 시간을 조작하거나 비교하는 기능이 불충분하다. 그래서 자바 8부터 날짜와 시간을 나타내는 여러 가지 API를 새롭게 추가했다. 이 API는 java.util 패키지에 없고 별도로 java.time 패키지와 하위 패키지로 제공된다. 패키지 설명 java.time 날짜와 시간을 나타내는 핵심 API인 LocalDate, LocalTime, LocalDateTime, ZonedDateTime을 포함하고.. 더보기 [Java] 기본 API 클래스 - Format 정수 세 자리마다 쉼표( , )를 넣고 싶다면 어떻게 해야 할까? 정수를 문자열로 변환한 다음, 세자리씩 끊어서 쉼표를 넣을 수 있을 것이다. 하지만 이 작업은 매우 귀찮은 작업이고 코드가 지저분해진다. 다른 예로 많은 수의 점수를 리스트화해서 출력할 때 소수점 한 자리로 일정하게 맞추어 출력하려면 어떻게 해야 할까? 각 점수에 10을 곱해서 정수화하고, 다시 10.0으로 나누어 소수점 한 자리로 만들어야 한다. 이 작업 역기 지저분하게 보인다. 날짜 역시 원하는 문자열로 출력하기 위해서는 Calendar로부터 년, 월, 일, 시, 분, 초를 얻어 원하는 문자열로 조합하는 과정을 거쳐야 한다. 자바에서는 이러한 문제들을 쉽게 해결할 수 있는 방법을 제공하는데, 이것이 형식 클래스이다. 형식 클래스는 ja.. 더보기 [Java] 기본 API 클래스 - Date, Calendar 날짜는 프로그램에서 자주 사용되는 데이터이다. 자바는 시스템의 날짜 및 시각을 읽을 수 있도록 Date와 Calendar 클래스를 제공하고 있다. 이 두 클래스는 모두 java.util 패키지에 포함되어 있다. Date 클래스 Date는 날짜를 표현하는 클래스이다. Date 클래스는 객체 간에 날짜 정보를 주고 받을 때 주로 사용된다. Date 클래스에는 여러 개의 생성자가 선언되어 있지만 대부분 Deprecated(비권장)되어 현재는 Date() 생성자만 주로 사용한다. Date() 생성자는 컴퓨터의 현재 날짜를 읽어 Date 객체로 만든다. Date now = new Date(); 현재 날짜를 문자열로 얻고 싶다면 toString() 메소드를 사용하면 된다. toString() 메소드는 영문으로 된 .. 더보기 [Java] 기본 API 클래스 - Math, Random Math 클래스 java.lang.Math 클래스는 수학 계산에 사용할 수 있는 메소드를 제공하고 있다. Math 클래스가 제공하는 메소드는 모두 정적(static)이므로 Math 클래스로 바로 사용이 가능하다. 다음은 Math 클래스가 제공하는 메소드들을 설명한 표이다. 메소드 설명 예제 코드 리턴값 int abs(int a) double abs(double a) 절대값 int v1 = Math.abs(-5); double 2 = Math.abs(-3.14); v1 = 5 v2 = 3.14 double ceil(double a) 올림값 double v3 = Math.ceil(5.3); double v4 = Math.ceil(-5.3); v3 = 6.0 v4 = -6.0 double floor(doubl.. 더보기 [Java] 기본 API 클래스 - Wrapper 자바는 기본 타입의 값을 갖는 객체를 생성할 수 있다. 이런 객체를 포장(Wrapper) 객체라고 하는데, 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문이다. 포장 객체의 특징은 포장하고 있는 기본 타입 값은 외부에서 변경할 수 없다. 만약 내부의 값을 변경하고 싶다면 새로운 포장 객체를 만들어야 한다. 포장 클래스는 java.lang 패키지에 포함되어 있는데, 다음과 같이 기본 타입에 대응되는 클래스들이 있다. char 타입과 int 타입이 각각 Character와 Integer로 변경되고, 기본 타입의 첫 문자를 대문자로 바꾼 이름을 가지고 있다. 기본 타입 포장 클래스 byte Byte char Character short Short int Integer long Long float Flo.. 더보기 [Java] 기본 API 클래스 - Arrays Arrays 클래스는 배열 조작 기능을 가지고 있다. 배열 조작이란 배열의 복사, 항목 정렬, 항목 검색과 같은 기능을 말한다. 단순한 배열 복사는 System.arraycop() 메소드를 사용할 수 있으나, Arrays는 추가적으로 항목 정렬, 항목 검색, 항목 비교와 같은 기능을 제공해준다. 다음은 Arrays 클래스가 가지고 있는 메소드들이다. 메소드 이름만 보면 어떤 기능을 제공하는지 쉽게 알 수 있다. Arrays 클래스의 모든 메소드는 정적(static)이므로 Arrays 클래스로 바로 사용이 가능하다. 리턴 타입 메소드 이름 설명 int binarySearch(배열, 찾는값) 전체 배열 항목에서 찾는 값이 있는 인덱스 리턴 타겟 배열 copyOf(원본 배열, 복사할길이) 원본 배열의 0번 인.. 더보기 이전 1 2 3 4 5 6 7 8 ··· 12 다음