16-2 스레드 - 제어
·
JAVA
이전 포스팅에서 스레드를 사용하기 위해 스레드.start() 메소드를 사용했다. 사실 start() 메소드를 호출한다고 해서 스레드가 곧바로 실행되는 것은 아니다. 실행 대기 상태가 되어 실행이 되기를 기다리는 상태가 된다. 운영체제에서는 실행대기 생태에 있는 스레드 중 하나를 선택하여 CPU가 run() 메소드를 실행하여 실행 상태(running)로 만든다. 상태 구분 내용 초기 상태 NEW 스레드 객체를 생성한 상태 실행 가능 RUNNABLE start()메서드로 스레드를 실행할 수 있는 상태 실행 중 RUNNING 실행가능한 스레드 중에서 스케줄러가 선택하여 스레드가 실행 중인 상태. CPU에 의해 코드가 한줄씩 실행된다. CPU는 n개의 스레드 중 1개밖에 처리할 수 없으며 n-1개의 스레드는 대..
16-1. 스레드 - 멀티스레드
·
JAVA
애플리케이션 실행 시 OS에서 실행에 필요한 메모리를 할당 받아 애플리케이션이 실행이 되는 것을 프로세스라고 한다. 이 프로세스의 흐름을 스레드라고 한다. 멀티 스레드란 하나의 프로세스 안에 두가지 이상의 흐름을 의미한다. 따라서 한 프로세스 내에 스레드가 2개라면 2개의 코드 실행 흐름이 있다는 것이다. 프로세스는 운영체제로 부터 메모리를 할당받아 처리하기 때문에 하나의 프로세스에 문제가 생겼다고해서 다른 프로세스에 영향을 미치지는 않는다. 하지만 스레드의 경우 한 프로세스 내부에서 실행되기 때문에 하나의 스레드에서 예외가 발생하게 된다면 프로세스 자체가 종료가 될 수 있기에 다른 스레드 역시 영향을 받는다. 메인 스레드 자바는 이전 포스팅에서 말했듯 메인스레드가 main()메소드를 실행하면서 시작한다..
15. java.lang에 대하여
·
JAVA
java의 기본적인 클래스를 담고 있는 클래스이다. 기본 패키지임으로 따로 import를 해줄 필요가 없다는 특징을 가지고 있다. 클래스 설명 Object 자바의 최상위 클래스 System 표준 입력 장치(키보드) 및 표준 출력 장치(모니터)를 통해 데이터 입력 출력 시 사용 Class 클래스 메모리 로딩 시 사용 String 문자열 저장 및 문자열 관련 여러 메소드 Wrapper (Byte, Short, Character Integer, Float, Double Boolean, Long) 기본 타입 데이터를 갖는데 사용 Math 수학 함수 System System 클래스를 이용하여 운영체제의 일부 기능을 사용할 수 있다. 프로그램 종료(System.exit(0)) 키보드 입력(System.read() ..
14. Object 클래스(hashcode() 및 equals())
·
JAVA
Object 자바의 모든 클래스는 Object 클래스로부터 오기 때문에 자바의 최상위 부모 클래스라고 볼 수 있다. 그 중 자주 사용하는 Object의 메소드를 살펴보자 equals() equals의 매개 값의 타입은 Object이다. 앞에서 말했듯 자바에서 제공하는 클래스의 최상위 클래스는 Object이기 때문에 자동 타입 변환으로 인해 어떠한 변수를 매개변수로 사용해도 된다. equals를 오버라이딩하지 않고 사용하게 되면 같이 주소값을 비교하는 ==와 동일한 기능을 갖는다. 이는 Object의 equals 메소드를 그대로 사용하기 때문이다. 여기서 하나의 의문점을 가지게 되는데 어떻게 String은 참조 변수임에도 불구하고 equals를 사용했을때 주소 값이 아닌 문자열을 비교했을까? 답은 이미 S..
13. 익명 객체
·
JAVA
상속의 경우 하나의 클래스 파일을 만들어 사용해야한다. 여러 곳에서 객체를 만들어 사용을 원할 시에 생성자로 호출할 수 있기 때문이다. 하지만 클래스의 이름 없이 일회성으로 상속받는 클래스가 있는데 이것을 익명(aninymous) 객체라고 한다. 특정 위치에서만 사용하며 재사용을 원하지 않을 시에 사용하기 좋은 방법이다. 익명 자식 개체 생성 방법 연습을 위한 Parent 클래스 생성 public class Parent { void parentMethod() {}; } 필드 선언 시 초기값으로 익명 자식 객체 생성 public class A { Parent field = new Parent() { int childField; void childrenMethod(){}; @Override void pare..
12. 중첩 클래스 및 인터페이스
·
JAVA
중첩 클래스 클래스 안에 클래스를 선언 한 것을 의미한다. 클래스 간에 접근이 용이하다는 장점을 가지고 있다. 클래스 뿐만 아니라 인터페이스 또한 중첩으로 선언할 수가 있다. 중첩 클래스는 선언되는 위치에 따라 멤버클래스와 로컬 클래스로 나뉘게 된다. 멤버 클래스 클래스 멤버로 선언되는 클래스 인스턴스 멤버 클래스 A객체를 생성해야만 B 클래스 사용 가능 정적 멤버 클래스 A클래스로 바로 접근 할 수있는 B 클래스 로컬 클레스 생성자 및 메소드 내부에서 선언되는 클래스 로컬 클래스 method() 실행시에만 사용 가능한 B클래스 인스턴스 멤버 클래스 class A { class B { B() {}; //생성자 int field1; //인스턴스 필드 void method1; //인스턴스 메소드 } } 정적..
BE전문가 프로젝트
BE전문가 프로젝트