본문 바로가기

PROGRAMMING/JAVA

[ JAVA 정복 ] Thread(쓰레드) - 2 6. 쓰레드 그룹(Thread group): 쓰레드 그룹은 서로 관련된 쓰레드를 그룹으로 다루기 위한 개념. 쓰레드 그룹은 보안상의 이유로 도입된 개념으로, 자신이 속한 쓰레드 그룹이나 하위 쓰레드 그룹은 변경할 수 있지만 다른 쓰레드 그룹의 쓰레드를 변경할 수는 없다. : 쓰레드를 쓰레드 그룹에 포함시키려면 Thread의 생성자를 이용해야 한다.모든 쓰레드는 반드시 쓰레드 그룹에 포함되어 있어야 하기 때문에 위와 같이 쓰레드 그룹을 지정하는 생성자를 사용하지 않은 쓰레드는 기본적으로 자신을 생성한 쓰레드와 같은 쓰레드 그룹에 속하게 된다. 123456789101112131415161718192021222324252627282930313233343536class ThreadGroupEx { public .. 더보기
[ JAVA 정복 ] Thread(쓰레드) - 1 1, 프로세스와 쓰레드(1) 프로세스(Process): 프로세스란 간단히 말하자면 '실행 중인 프로그램(program)' 이다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다. - 프로세스 = 수행 시 필요한 데이터 + 메모리 등의 자원 + 쓰레드(실제로 작업을 수행하는 것): 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스는 '멀티쓰레드 프로세스(multi-threaded process)'라고 함.하나의 프로세스가 가질 수 있는 쓰레드의 갯수는 제한되어 있지 않으나 쓰레드를 수행하는데 개별적인 메모리 공간(호출 스택)을 필요로 하기 때문에 메모리 한계에 따라 생성할 수 있는 쓰레드의 수가 결정됨. (2) 멀티태스킹과 멀티.. 더보기
[ JAVA 정복 ] java.lang 패키지와 유용한 클래스 오늘은 자바의 정석 Chapter 9장에 있는 내용 중 몇가지만 다뤄볼 예정이다. 1. String, StringBuffer, StringBuilder 차이(1) String: String은 new 연산자를 통해 생성되면 그 인스턴스의 메모리 공간은 절대 변하지 않는다.+나 concat을 이용해 문자열을 변경하는 경우가 있는데 그럴 경우 메모리 공간에 저장된 값이 변하는게 아니라 매번 새로운 String 객체를 new 연산자로 만들어서 새로운 메모리 공간을 만드는 것이다. * 여기서 잠깐! : 왜 아래 [ 예제 코드 1 ] 에서 String class의 hashCode() 메서드가 아닌 System 클래스의 identityHashCode() 메서드를 사용했을까? String 클래스는 문자열의 내용이 같으.. 더보기
'==' , compareTo(), equals() - 서로간의 차이점에 대해 알아보자 연산자 ==, String 메서드 equals와 compareTo. 이 셋은 모두 비교를 할 때 쓰이는 연산자와 메서드이다. 그렇다면 과연 이 셋의 차이점을 무엇일까? 일단 API를 보며 이 셋을 분석해보자. 1) compareTopublic int compareTo(String anotherString) Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character seq.. 더보기
잠깐) 보수법 최근 공부를 하다가 음수인 2진수를 10진수로 바꾸는 방법을 몰랐던 일이 있었다. 또잉~그래서 보수법에 관해 질문을 하였고 가르침 받은 토대로 보수법에 관해 정리한 포스팅이다. 보수법(complement) 이란?: 원래 컴퓨터 내부에서 음의 수가 양의 수와 마찬 가지로 계산될 수 있도록 표현하기 위해 고안된 1의 보수가 있었다. 하지만 0이 00000000과 10000000, 이렇게 두가지로 표현되는 문제가 나타났다. 이를 보완하기 위해 1의 보수 후 1을 더해 완성하는 2의 보수법이 나왔고 현재는 1의 보수는 쓰이지 않는다. 컴퓨터는 '1+1 = 2' 라고 인식한다.하지만 '3 - 2 = ' 을 인식하지 못한다. 왜냐하면 (-) 기호 연산자를 지원하지 않기 때문이다.그렇다면 저 식을 어떻게 읽어 내는가.. 더보기
4. 상속(inheritance) 이번엔 상속에 대해 알아보자.상속이 무엇일까? - 상속(inheritance) : 부모가 소유하고 있는 재산의 일부를 자식이 물려받는 것을 말한다. 즉, 클래스를 가져다가 확장해서 새로운 클래스를 만드는 기술. 가져다가 확장? 잘 이해가 되지 않는 분들을 위해 그림을 통해 설명을 하겠다.출처 : 뇌를 자극하는 Java 프로그래밍, 한빛미디어, 김윤명 저 상속을 통해 기존에 있던 클래스를 고스란히 가져와 내가 추가해야 할 부분만 추가하면 클래스가 새로 만들어지는 것이다. 이렇게 상속을 통해 장점이 생기는 것이다. 1) 잘 설계된 클래스를 재사용 가능하다.2) 재사용으로 인해 코드의 간결성이 높아진다.3) 잘 정의된 super 클래스가 있다면, sub 클래스의 작성이 간편해지고 개발 시간이 단축된다. 그렇다.. 더보기
3. 배열(Array) 오늘은 배열에 대해 포스팅을 해볼까 한다.우선 배열이 무엇인가? - 배열(Array) : 같은 자료형들끼리 모아두는 하나의 묶음. 같은 자료형들끼리? 예를 들자면, 도서관에 책의 종류를 분류하여 정리해놓는다. 한국문학은 한국문학끼리, 독일 문학은 독일 문학끼리, 스포츠는 스포츠 관련 책들 이런식으로 정리해 놓는다. 이것처럼 int형은 int형끼리 char형은 char형끼리 String형은 String형끼리 모아두는 하나의 묶음을 배열이라 한다. 배열은 이런식으로 분류할 수 있다.각각의 설명은 뒷부분에서 설명하겠다. 배열은 선언되는 형식에 따라서 1차원 배열과 다차원 배열로 나눠질 수 있다. - 1차원 배열의 선언 방식 타입 식별자[](or 타입[] 식별자);식별자 = new 타입[크기]; - 1차원 배열.. 더보기
2. 클래스 1. 클래스와 객체의 개념: 클래스는 건축에서의 설계도와 같으며, 객체(object)란 설계도를 통해 지어진 집의 의미와 일맥상통함. 1) 클래스(Class) : 특정 종류의 모든 객체들의 원형.2) 객체(Object) : 클래스를 통해 생성된 대상을 의미.☆재 사용 가능하도록 클래스를 설계하는 것이 매우 중요!★ 2. 클래스1) 클래스의 구조[클래스명] * 클래스명은 왜 대문자일까???class Test(){ 암묵적 Rule임. 변수명은 소문자로 시작, 클래스명은 대문자로 시작.[멤버 변수] public int a = 0; private char b = 'c';[생성자] public Test(){ }[메소드] public void plus(int a, int b){ System.out.println(a.. 더보기
1. JAVA 기초 1. JAVA란 무엇인가?1) 프로그래밍이란 무엇인가?: 개발자가 특정 메모리 공간을 활용하여 프로세스를 구동시키는 것을 프로그램이라 하며, 이를 개발하는 것을 프로그래밍이라 한다.* 프로그램 : 하드 디스크 등에 저장되어 있는 실행코드의 성격이 강한 것. 예를 들면, 내가 만든 Application. 알집, 곰플레이어 등 이런 Application.* 프로세스 : 프로그램을 구동하여 메모리에 적재되어 있는 상태로 실행되는 하나의 실행 단위. 예를 들자면 알집을 이용하여 압축을 푸는 것, 실행중인 프로그램. 2) JAVA의 탄생 배경- 1991년 썬 마이크로시스템즈사(社)는 차세대 새로운 컴퓨터 프로그래밍 도구를 제작하기 위해 ‘더 그린 프로젝트(the Green project)’에 착수하였고 Oak라는.. 더보기
eclipse 자바독 API 만들기 1) API(Application Programming Interface)란?: 자바를 사용하여 쉽게 구현할 수 있도록 한 클래스 라이브러리의 집합. 즉 자바라는 언어를 사용하여 사용자의 부담을 최소화 하는 반면에 입출력, 화면구성, 이미지, 네트워크와 같이 복잡하지만 필요한 클래스들을 미리 구현하여 사용자가 쉽게 구현하도록 하는 API이다. 이러한 자바 API는 하나의 커다락 플래스 계층구조로 설계되어 있다.[출처] 자바 API 란|작성자 빵끄 무슨 말인지 잘 모르겠다.http://docs.oracle.com/javase/6/docs/api/이 곳을 들어가면 java se버전의 모든 메소드를 모아놨다.한마디로 영어 사전 같은 곳이다. 소스를 코딩하기 전 잘 알지 못하는 메소드를 찾아 그에 대한 정의를 .. 더보기