[Java 기초문법] by Programmers school 자바 입문
Thread 클래스를 상속받기
java.langThread 클래스를 상속받고 run() 메소드를 오버라이딩 한다.
public class Mythread extends Thread{
@Override
public void run(){
super.run();
}
}
String 메소드를 만들고 run에서 이를 10번 출력하게 해보자.
출력이 너무 빠르기 때문에 텀을 준다.
@Override
public void run(){
for (int i = 0; i < 10; i++){
System.out.println(str);
try {
Thread.sleep((int) Math.random()*1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
메인 메소드에서 Thread를 호출할 때 start()를 시켜주는 함수를 사용한다.
t1.start();
이 코드를 읽으면서 기존의 흐름 외에 하나가 추가되면서 수행 흐름이 2개로 나뉘게 된다.
main에는 함수 종료를 나타내기 위해 string을 입력한다.
이것으로 main이 종료되어도 아직 끝나지 않은 쓰레드들이 돌아가고 있음을 알 수 있다.
public class Mythread extends Thread{
String str;
public Mythread (String str){
this.str = str;
}
@Override
public void run(){
for (int i = 0; i < 10; i++){
System.out.println(str);
try {
Thread.sleep((int) Math.random()*1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
public static void main(String[] args) {
Mythread t1 = new Mythread("*");
Mythread t2 = new Mythread("-");
t1.start();
t2.start();
System.out.println("main end");
}
}
Runnable 인터페이스 이용하기
public class Mythread implements Runnable {
러너블 인터페이스를 받도록 한다.
이때 thread 객체를 만들어서 보내주어야 한다.
public class Mythread implements Runnable {
String str;
public Mythread(String str){
this.str = str;
}
public void run(){
for(int i = 0; i < 10; i ++){
System.out.print(str);
try {
Thread.sleep((int)(Math.random() * 1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Mythread r1 = new Mythread("*");
Mythread r2 = new Mythread("-");
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
System.out.print("!!!!!");
}
}
마찬가지로 main이 먼저 종료되고 t1과 t2가 돌아가고 있음을 확인할 수 있다.
반응형
'Programming > Java, Spring' 카테고리의 다른 글
[Java 기초문법] SQuirrel SQL client 설치하고 세팅하기 + 간단한 테이블 생성하기 (0) | 2022.10.22 |
---|---|
[Java 기초문법] 자바 람다식 lambda (0) | 2022.10.21 |
[Java 기초문법] 시간 관련 메서드, Date, Calendar, java.time 패키지 (0) | 2022.10.21 |
[Java 기초문법] Collections, Set, Hashset, Treeset, List, Map (0) | 2022.10.21 |
[Java 기초문법] 문자열 비교하기 , 필드, 메소드, 변수의 scope와 static, 열거형 (enum) (0) | 2022.10.21 |