-프로그램
-프로세스
-쓰레드
-멀티 프로세스
-멀티 쓰레드
- 300번 찍기
| 300번찍기
class MyThread1 extends Thread{
@Override
public void run() {
System.out.println(getName());
for(int i = 0; i < 300; i++) {
System.out.println("-");
}
}
}
class MyThread2 extends Thread{
@Override
public void run() {
System.out.println(getName());
for(int i = 0; i<300; i++) {
System.out.println("|");
}
}
}
public class 300 {
public static void main(String[] args) throws Exception{
String name = Thread.currentThread().getName();
System.out.println(name);
MyThread1 th1 = new MyThread1();
MyThread2 th2 = new MyThread2();
th1.start();
th2.start();
}
}
2번의 방식처럼 Thread 클래스를 상속받아 run 메소드를 오버라이딩
아래처럼 Runnable 인터페이스를 implements 후 run 메소드를 정의
class MyThread1 implements Runnable{
@Override
public void run() {
for(int i = 0; i < 300; i++) {
System.out.println("-");
public class Thread {
public static void main(String[] args) throws Exception{
Runnable runnable = new MyThread1();
Thread th3 = new Thread(runnable);
th3.start();}}}
BufferedWriter는 String 전체 쓰기 가능
쓰레드
"동시에"
웹프로그래밍에서는 사용되지 않음(어플리케이션에서 사용됨)
멀티프로세스 vs 멀티쓰레드
컨텍스트 스위칭 (여러 프로그램을 동시에 사용할수 있도록 함)
프로그램(프로세스) 안에 또 다른 프로그램(쓰레드)
start로 os에 쓰레드에 등록시켜서 실행시키는것
싱글 프로세스는 기본적으로 main 쓰레드가 있다.
동기화에 주의 필요
sleep(1000)은 컨텍스트 스위칭을
1초(보장못함,대략적)동안 다른 쓰레드에게 주라는 의미
단일쓰레드 -> 멀티쓰레드의 문제 : dead lock