Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring
- jQuery
- websocket
- 블록체인
- Cookie
- node.js
- 웹소켓
- 웹게임
- autowired
- PL/SQL
- EC2
- tiles.xml
- 알고리즘
- HTML
- RDS
- model1
- Servlet
- AWS
- 암호화
- 도커
- phaser
- JSP
- 비트코인
- 배포
- Ajax
- SQL
- CSS
- JavaScript
- express
- docker
Archives
- Today
- Total
記錄
JAVA) Thread 본문
CPU의 스케줄링 Priority 설정으로 간섭할 수는 있으나
전체적인 컨트롤은 불가능하다
//Thread : 프로세스에서 하나의 최소 실행단위 (method)
//Thread 생성방법
//1. Thread 클래스를 상속
//2. implements Runnable 구현
//두 방법 다 반드시 run() 추상함수 재정의
/*
Thread구현 방식이 둘 인 이유는
다중상속과 관련이 깊다
특정 클래스를 상속하면서도 Thread 기능을 구현하고 싶을 때
extends Thread만으로는 원하는 상속을 다 하지 못하므로
Runnable interface로도 Thread를 구현할 수 있게 한 것이다
또, 이와 연관되어
Thread 클래스가 추상클래스가 아니라 일반클래스인 이유는
Runnable 사용시 Thread 를 생성하고 파라미터로 넣어야 하는데
추상클래스라면 Thread를 생성하지 못하기 때문에
일반 클래스로 설계되어 있는 것이다
start()함수는 스택을 만들고 run()을 새로 만들어진 스택에 올리는 역할
스택에 올리고 나서 start()는 종료된다
*/
class Thread_1 extends Thread {
@Override
public void run() { // 새로운 stack 에 처음 올라가는 함수
for (int i = 0; i < 1000; i++) {
System.out.println("Thread_1 : " + i + this.getName());
}
System.out.println("Thread_1 run() END");
}
}
class Thread_2 implements Runnable {
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
System.out.println("Thread_2 : " + i);
}
System.out.println("Thread_2 run() END");
}
}
public class Ex02_Multi_Thread {
static int count = 0;
public static void main(String[] args) {
System.out.println("Main Start");
// 1번
Thread_1 th = new Thread_1();
th.start(); // .start()는 stack 생성하고 stack에 run() 올려놓고 사라진다
// 2번
Thread_2 th2 = new Thread_2();
Thread thread = new Thread(th2); // 일반 클래스
thread.start(); // .start()는 stack 생성하고 stack에 run() 올려놓고 사라진다
for (int i = 0; i < 1000; i++) {
System.out.println("main : " + i);
count++;
}
System.out.println("Main END");
}
}
'Computer language > JAVA' 카테고리의 다른 글
JAVA) HashMap에서의 순서 (0) | 2018.02.21 |
---|---|
JAVA) HashMap의 value들을 ArrayList에 넣기 (0) | 2018.02.21 |
JAVA) 직렬화 (0) | 2018.02.20 |
JAVA) CMD내 TREE 기능 구현 (0) | 2018.02.19 |
JAVA) Map.Entry와 entrySet() (1) | 2018.02.14 |
Comments