스레드
멀티 스레딩
- 하나의 프로그램이 동시에 여러 가지 작업을 할 수 있도록 하는 것
- 각각의 작업이 스레드(thread)
멀티 스레딩의 문제점
여러 스레드들이 같은 데이터를 공유할 때, 동기화 문제 발생

Thread 클래스

EX) Thread 클래스를 상속하는 방법
class MyThread extends Thread { // ①
public void run() { // ②
for (int i = 0; i <=10; i++)
System.out.print(i + " ");
}
}
public class MyThreadTest {
public static void main(String args[]) {
Thread t = new MyThread(); // ③
t.start(); // ④
}
}
더보기
0 1 2 3 4 5 6 7 8 9 10
Thread 클래스를 상속받은 후에 run() 메소드를 재정의하고, 안에 작업을 기술한다.
EX) 람다식을 이용한 스레드 작성
public class LambdaTest {
public static void main(String args[]) {
Runnable task = () -> {
for (int i = 0; i <=10; i++)
System.out.print(i + " ");
};
new Thread(task).start();
}
}
더보기
0 1 2 3 4 5 6 7 8 9 10
(참고)
[JAVA] 람다식(Lambda)의 개념 및 사용법
람다함수란? 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어입니다. 현재 사용되고 있는 람다의 근간은 수학과 기초 컴퓨터과학 분야에서의 람
khj93.tistory.com
람다함수
프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어
특징
- 이름을 가질 필요가 없다: 익명 함수 (Anonymous functions)
- 두 개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다 대수로 단순화: 커링 (Curring)
람다의 표현식
1. 람다는 매개변수 화살표(->) 함수몸체로 이용하여 사용 할 수 있습니다.
2. 함수몸체가 단일 실행문이면 괄호{}를 생략 할 수 있습니다.
3. 함수몸체가 return문으로만 구성되어 있는 경우 괄호{}를 생략 할 수 없습니다.
2. () -

EX) 그래픽 버전 카운터 만들어보기
스윙 컴포넌트를 사용하여서 0부터 10까지 1초 단위로 카운트다운하는 애플리케이션을 그래픽 모드로 작성하여 보자.
import javax.swing.*;
import java.awt.*;
public class CountDownTest extends JFrame {
private JLabel label;
class MyThread extends Thread {
public void run() {
for (int i = 0; i <=10; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
label.setText(i + "");
}
}
}
public CountDownTest() {
setTitle("카운트다운");
setSize(400, 150);
label = new JLabel("0");
label.setFont(new Font("Serif", Font.BOLD, 100));
add(label);
setVisible(true);
(new MyThread()).start();
}
public static void main(String[] args) {
CountDownTest t = new CountDownTest();
}
}
실행결과

스레드 상태

'JAVA > 척척학사 스터디' 카테고리의 다른 글
[JAVA] 네트워크 프로그래밍 (1) | 2023.06.07 |
---|---|
[JAVA] 제네릭(generic), 컬렉션(collection) (2) | 2023.05.17 |