쓰레드(Thread)의 생성 및 실행
쓰레드를 생성하는 방법은 크게 2가지로 나눌수 있다.
- Thread 클래스를 상속받아 run() 메서드를 오버라이딩하는 것
- Runnable 인터페이스를 구현한 객체를 생성한뒤 run() 메서드를 구현하는 것
쓰레드의 생성 및 실행
Thread 클래스를 상속받아 run() 메서드 재정의
class A extends Thread {
@Override
public void run() {
String[] strs = {"하나", "둘", "셋", "넷", "다섯"};
try {
Thread.sleep(10);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
for (String str : strs) {
System.out.println("- (자막 번호) " + str);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
class B extends Thread{
@Override
public void run() {
int[] ints = {1, 2, 3, 4, 5};
for (int anInt : ints) {
System.out.println("(비디오 프레임) " + anInt);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
public class Test {
public static void main(String[] args) {
A a = new A();
a.start();
B b = new B();
b.start();
}
}
Runnable 인터페이스 구현 객체를 생성한 후 Thread 생성자로 Runnable 객체 전달
class A implements Runnable {
@Override
public void run() {
String[] strs = {"하나", "둘", "셋", "넷", "다섯"};
try {
Thread.sleep(10);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
for (String str : strs) {
System.out.println("- (자막 번호) " + str);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
class B implements Runnable{
@Override
public void run() {
int[] ints = {1, 2, 3, 4, 5};
for (int anInt : ints) {
System.out.println("(비디오 프레임) " + anInt);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
public class Test {
public static void main(String[] args) {
Runnable a = new A();
Thread thread1 = new Thread(a);
Runnable b = new B();
Thread thread2 = new Thread(b);
thread1.start();
thread2.start();
}
}
댓글남기기