![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bYrd4x/btsINals3Bw/BTL3Mwv0uEf0wH3ZkOqIBK/img.webp)
스레드 생성 전에는 프로세스가 작동하기 위한 최소한의 스레드 하나가 있어야 한다. 그래서 자바는 실행 시점에 main 이라는 이름의 스레드를 만들고 프로그램 시작점인 main 메서드를 실행한다. 스레드 생성 후를 보면 스레드 객체를 생성하고 start 메서드를 호출했을 때 자바는 스레드를 위한 별도의 스택 공간을 할당하게 된다. 새로운 스레드가 사용할 전용 스택 공간에 run 메서드의 스택 프레임을 스택에 올리면서 run 메서드를 시작한다. 메서드를 실행하면 스택 위해 스택 프레임이 쌓이게 되는 것이다. 스레드 간 실행 순서는 보장하지 않는다. 스레드는 동시에 실행되기 때문이다. * start() 메서드- 스택 공간을 할당하면서 스레드를 시작하는 아주 특별한 메서드로 run 메서드를 실행한다.- ma..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/7GoBO/btsIMuSdoVn/SfYfTzfEA4oY4U5TUvKzVk/img.webp)
* 멀티태스킹- 단일 CPU가 여러 작업을 동시에 수행하는 것처럼 보이게 하는 것- 소프트웨어 기반으로 cpu 시간을 분할하여 각 작업에 할당- ex) 여러 애플리케이션이 동시에 실행되는 환경 * 스케줄링- cpu에 어떤 프로그램이 얼마만큼 실행될지 운영체제가 결정하는 것- 이때 단순 시간이 아닌 우선순위와 최적화 기법을 사용한다. * 멀티프로세싱- 여러 CPU코어(프로세서)를 사용하여 동시에 여러 작업을 수행- 하드웨어 기반으로 성능 향상- ex) 다중 코어 프로세서를 사용하는 현대 컴퓨터 시스템 * 프로세스- 운영체제 안에서 실행중인 프로그램의 인스턴스- 각 프로세스는 독립적인 메모리 공간을 갖고 운영체제에서 별도의 작업 단위로 분리해서 관리된다.- 프로세스가 서로의 메모리에 직접 접근할 수 없다. ..
* 요구사항1Client는 Server에 등록 할 수 있어야 한다. (식별가능 ID)2Client사이에는 1:1 또는 1:N으로 Chatting이 가능해야 한다.3Client는 귓속말이 가능해야 한다.4Client는 대화창으로 대화를 해야 한다.5Server는 Client를 등록하고 관리 할 수 있어야 한다. Server가 접속한 Client 상태를 전송할 수 있어야 한다. * Client-Server 채팅 프로그램 흐름Client의 연결 요청 => 미리 실행되어서 ServerSocket을 생성하고 accept()로 클라이언트의 요청을 기다리고 있던 Server는 연결 요청을 승인한다. => 연결 되는 순간 Socket 객체가 생성되어 Client-Server간 데이터를 주고받을 수 있는 상태가 되었고,..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/baviqA/btsDxm4L1Uu/e4O14viP6Ykkju9Rx7dC8k/img.png)
1. 메서드 오버라이딩 package poly.overriding; public class Parent { public String value = "parent"; public void method() { System.out.println("Parent.method"); } } package poly.overriding; public class Child extends Parent { public String value = "child"; @Override public void method() { System.out.println("Child.method"); } } => Child에서 Parent의 메서드를 오버라이딩 하였다. package poly.overriding; public class Over..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/3UWDC/btsC9k0uMwy/oGyqizeUH8ByRONsiz8mxK/img.png)
다형성과 캐스팅 //부모 변수가 자식 인스턴스 참조(다형적 참조) Parent poly = new Child(); //단, 자식의 기능은 호출할 수 없다. 컴파일 오류 발생 //poly.childMethod(); //다운캐스팅(부모 타입을 자식 타입으로) Child child = (Child) poly; child.childMethod(); //실행순서 Child child = (Child) poly; //다운캐스팅을 통해 부모타입을 자식 타입으로 변환한 뒤 대입 Child child = (Child) x001 //참조값을 읽을 다음 자식 타입으로 지정 //따라서 Parent poly의 타입이 변하는 것이 아닌 참조값이 Child 타입이 되는 것이다. 캐스팅 종류 ((Child) poly).childMe..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dYByR0/btsA31cjBqE/WSaEGLx4P2dhVpAbiPKKf0/img.png)
JDK/JRE 1. 개념 JDK(Java Development Kit): 개발자들이 자바로 개발하는 데 사용하는 SDK키트. SDK(Software Development Kit): OS, H/W에서 제공하는 툴 ex) 안드로이드 스튜디오 2. 버전 Java SE: 가장 기본이 되는 표준 에디션의 자바 플랫폼으로 자바 언어 핵심 기능 제공 Java EE: 대규모 기업용 에디션으로 기업환경을 위한 대규모 솔루션 개발 Oracle JDK Open JDK Amazon Corretto 3. JDK 디렉토리 구성요소 bin: 자바 개발, 실행에 필요한 도구와 유틸리티 명령 javac: 자바 컴파일러로 자바 소스를 바이트코드로 컴핑 java: 자바 인터프리터 jar: 자바 클래스 파일을 압축한 자바 아카이브 파일 l..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/wCPlf/btspVMCVJen/0HPvPQoJkk9YHTQzgT0ewk/img.png)
1. NULL 어떠한 값으로도 초기화 되지 않은 상태로 참조형 타입의 기본값이다. 힙메모리상에서 데이터를 만들어 내지 않는다. 2. ""(공백) 공백값은 하나의 스트링으로 변수를 선언한것처럼 빈 값을 메모리에 할당한 행동이다. 3. 차이점 NULL은 어떠한 변수를 사용하겠다고 예고해 놓은 상태이고 ""(공백)은 이미 사용한 것이다. (메모리에 할당된 것의 차이) 4. Object 모든 클래스의 최상위 클래스 모든 클래스는 Object를 상속받음 5. boolean equals(Object obj) 물리적으로 다른 메모리에 위치하는 객체여도 논리적으로 동등함을 구현하기 위함 동일성: 두 객체의 참조 변수의 주소가 같으면 true 아니면 false (==) 동등성: 서로 다른 객체이지만 가지고 있는 값을 비..