운영체제에 독립적
객체지향 프로그래밍
자동 메모리 관리
풍부한 표준 라이브러리
멀티스레드 지원
자바에서는 java.lang.Thread 클래스
와 Runnable 인터페이스
를 통해 멀티스레드 프로그래밍을 지원한다. 멀티스레드를 통해 복잡한 작업을 병렬로 처리하고 I/O 대기시간 등을 최소화하여 응답성을 향상시킬 수 있다.
class MyRunnable implements Runnable {
public void run() {
//스레드가 실행할 작업
}
}
Thread myThread = new Thread(new MyRunnable());
myThread.start();
위 코드는 Runnable 인터페이스를 구현하여 스레드를 생성하고 실행하는 간단한 예제다.
자바에서 스레드를 생성하고 실행하는 방법은 대표적으로 Thread 클래스를 상속받아 run()
메서드를 오버라이드하는 것과 Runnable 인터페이스를 구현하는 것 두 가지가 있다.
public synchronized void synchronizedMethod() {
//동기화된 메소드 내용
}
또한 멀티스레드는 동시에 같은 데이터에 접근할 때 데이터의 일관성을 유지하기 위해 동기화가 필요하다.
위의 코드는 메서드가 동기화됨으로써 한 번에 하나의 스레드만 접근할 수 있게 되었고, 덕분에 데이터의 동시 수정을 방지할 수 있다. 자바에서는 synchronized
키워드, volatile
키워드, Lock 인터페이스
등으로 다양한 동기화 메커니즘을 제공한다.
정리하자면 자바는 멀티스레드가 가능한 언어로, 알아야할 점은 동기화를 통해 데이터의 일관성과 스레드의 안정성을 보장할 수 있어야 된다는 것이다. 참고로 최근 배달의 민족에서 Java의 경량스레드 모델인 Virtual Thread를 소개한 적이 있다. 점점 Java의 멀티스레드가 발전하고 있는 추세라는 것.
변수
표기법
자료형
기본형과 참조형
Call by value와 Call by references
형변환
연산자
Scanner클래스
입력과 출력
Pseudocode(슈도코드)
if문
if-else문
switch문
while문
for문
이중 중첩 for문
향상된 for문
break문
continue문