Backend/JAVA
[JAVA] thread
howdyoon
2023. 3. 26. 22:18
1. Thread 클래스를 상속
class MyThread extends Thread {
public void run() {/* 작업내용 */} //Thread클래스의 run()을 오버라이딩
}
2. Runnable 인터페이스를 구현
class MyThread implements Runnable {
public void run() {/* 작업내용 */} //Runnable인터페이스의 run()을 구현
}
package oop0322;
class MyThread1 {
private int num;
private String name;
public MyThread1() {}
public MyThread1(int num, String name) {
this.num = num;
this.name = name;
}//end
public void start() {
run();
}//start() end
public void run() {
for(int a=0; a<num; a++){
System.out.println(name+":"+a);
}//for end
}//run() end
}//class end
public class Test05_thread {
public static void main(String[] args) {
//Thread 클래스
//->하나의 프로그램이나 하나의 메소드가 CPU자원을 전부 점유하는 것을 막을 수 있다
//1)쓰레드를 사용하지 않는 경우
MyThread1 t1=new MyThread1(1000, "★");
MyThread1 t2=new MyThread1(1000, "★★");
MyThread1 t3=new MyThread1(1000, "★★★");
t1.start();
t2.start();
t3.start();
}//main() end
}//class end
package oop0322;
class MyThread2 extends Thread {
//클래스가 클래스를 상속받는 경우, 단일상속만 가능하다
private int num;
private String name;
public MyThread2() {}
public MyThread2(int num, String name) {
this.num = num;
this.name = name;
}//end
//start()함수는 run()함수를 호출하는 기능
@Override
public void run() {//비지니스 로직 구현
for(int a=0; a<num; a++){
System.out.println(name+":"+a);
}//for end
}//run() end
}//class end
public class Test06_thread {
public static void main(String[] args) {
//2)쓰레드를 사용한 경우
//->JVM이 쓰레드 관리자에 등록하고, start()메소드가 run()를 호출한다
//->예) 채팅, 실시간 예매등에 많이 사용
MyThread2 t1=new MyThread2(1000, "★");
MyThread2 t2=new MyThread2(1000, "★★");
MyThread2 t3=new MyThread2(1000, "★★★");
t1.start();
t2.start();
t3.start();
}//main() end
}//class end
package oop0322;
class MyThread3 implements Runnable {
private int num;
private String name;
public MyThread3() {}
public MyThread3(int num, String name) {
this.num = num;
this.name = name;
}//end
@Override
public void run() {
for(int a=0; a<num; a++){
System.out.println(name+":"+a);
}//for end
}//run() end
}//class end
public class Test07_thread {
public static void main(String[] args) {
//3) Runnable인터페이스를 이용해서 쓰레드를 구현한 경우
/*
Interface Runnable{}
class Thread implements Runnable{}
*/
Thread t1=new Thread(new MyThread3(1000, "★"));
Thread t2=new Thread(new MyThread3(1000, "★★"));
Thread t3=new Thread(new MyThread3(1000, "★★★"));
t1.start();
t2.start();
t3.start();
}//main() end
}//class end