![JVM(Java Virtual Machine) 구조](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblPR3s%2FbtsJeV2fAIu%2FVAkC4qNgKEmrRSmML3QHH1%2Fimg.png)
자바의 특징 Write once, run anywhere. (한 번 작성하면 어디서든 실행된다.) 1. JVM: Java Virtual Machine JVM이란 Java 프로그램을 실행하는 가상 환경이다. 자바 가상 머신을 사용하여 자바 바이트 코드를 실행할 수 있다. JVM은 운영체제 위에서 작동하면서, 자바 컴파일러에 의해 생성된 바이트 코드를 운영체제가 이해할 수 있는 기계어로 바꿔 실행한다. 덕분에 자바 프로그램은 특정 운영체제에 종속되지 않고, 다양한 운영체제에서 동일하게 사용할 수 있다. ex) 소스 코드가 담긴 Person.java 파일이 자바 컴파일러에 의해 컴파일되면 Person.class 파일이 생성된다. 이 .class 파일에는 바이트코드가 포함되어 있고, JVM이 바이트코드를 기계어..
![[Java] LockSupport와 ReentrantLock](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FebR5D3%2FbtsIUsr8lCT%2FjClHTkfYLYrHk3T6cbTfP0%2Fimg.png)
1. LockSupport1-1. LockSupport란?synchronized의 경우 임계 영역에 접근하지 못하고 대기 중인 스레드는 BLOCKED 상태가 된다. BLOCKED 상태는 다른 스레드에 의해 interrupt 될 수 없기 때문에 lock을 얻지 못하면 영원히 대기 상태로 유지한다.LockSupport는 무한 대기를 해결하기 위해서 대기 중인 스레드의 상태를 BLOCKED가 아닌 WAITING 이 되게 한다. WAITING 상태는 다른 스레드가 interrupt를 통해 깨우거나, 스스로가 시간을 정하여 깨어날 수 있다.1-2. LockSupport의 대표적인 기능park() : 현재 스레드를 WAITING 상태로 바꾼다.parkNanos(nanos) : 나노초 동안 현재 스레드를 TIMED_..
![[Java] 배열(Array), ArrayList, LinkedList](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrWmJY%2FbtsIy1nTgoK%2FQeAFJ6Umou3Zlju071jxNk%2Fimg.png)
1. 배열(Array)1-1. 배열이란?입력된 데이터가 메모리 공간에 연속적으로 저장되는 자료 구조이다. 메모리에 연속적으로 저장된다는 특징으로 인해 index를 통해 데이터에 접근이 가능하다. 연속적으로 저장하기 위해서는 미리 메모리의 크기를 할당받아야 하므로, 배열을 생성 후 크기를 수정할 수 없다. 1-2. 시간복잡도삽입배열의 끝에 데이터를 삽입하는 경우 : O(1)끝이 아닌 처음이나 중간에 삽입하는 경우 : O(N)전자의 경우 삽입될 메모리의 영역을 알고 있기 때문에 바로 삽입할 수 있다. 후자의 경우 특정 위치에 데이터를 삽입하게 되면 삽입된 지점 이후의 데이터를 뒤로 복사하여 이동시켜야 한다.탐색특정 인덱스(Index) 탐색 : O(1)모든 데이터 탐색 : O(N)배열의 특징으로 연속적으로 메..