: Thread가 하나뿐인 프로그램을 말한다.
package kr.or.ddit.basic;
public class T01_ThreadTest {
public static void main(String[] args) {
//씽글 쓰레드 프로그램
for(int i=1; i<=200; i++) {
System.out.print("*"); // 별표 200개
}
System.out.println();//줄바꿈
for(int i=1; i<=200; i++) {
System.out.print("$");//달러 200개
}
}
}
: Thread가 2개 이상인 프로그램을 의미한다.
Thread Ctrl+F2 누르면 정의
class Thread implements Runnable {
}
Runnable Ctrl+F2 누르면 정의
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
class MyThread1 extends Thread{ // Thread를 상속받아야지 클래스 생성 가능
@Override
public void run() { // thread클래스 안에 있는 run() 오버라이드
for(int i =1; i<=200; i++) {
// System.out.print("*");
System.out.print("오");
try {
//Thread.sleep(시간) => 주어진 시간동안 작업을 잠시 멈춘다.
//시간은 밀리세컨드 단위를 사용한다.
//즉, 1000ms는 1초를 의미한다.
Thread.sleep(100);
}catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}
class MyThread2 implements Runnable{
@Override
public void run() {
for(int i =1; i<=200; i++) {
// System.out.print("$");
System.out.print("혁");
try {
//Thread.sleep(시간) => 주어진 시간동안 작업을 잠시 멈춘다.
//시간은 밀리세컨드 단위를 사용한다.
//즉, 1000ms는 1초를 의미한다.
Thread.sleep(100);
}catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class T02_ThreadTest {
public static void main(String[] args) {
이 인스턴스의 start()메서드를 호출 => mainThread
MyThread1 th1 = new MyThread1(); // 스레드 객체 'th1'생성후
th1.start(); // 반드시 start()로 실행 => maintThread
이 인스턴스를 Thread객체의 인스턴스를 생성할 때 생성자의 매개변수로 넘겨준다.
이때 생성된 Thread객체의 인스턴스의 start()메서드 호출
MyThread2 r1 = new MyThread2(); // 인스턴스 생성
Thread th2 = new Thread(r1); // 생성자의 매개변수로 r1
th2.start();
Runnable 인터페이스로 구현한 익명클래스를 Thread인스턴스 생성할 때
매개변수로 넘겨준다.
Thread th3 = new Thread(new Runnable() {
@Override
public void run() {
for(int i =1; i<=200; i++) {
// System.out.print("@");
System.out.print("♥");
try {
//Thread.sleep(시간) => 주어진 시간동안 작업을 잠시 멈춘다.
//시간은 밀리세컨드 단위를 사용한다.
//즉, 1000ms는 1초를 의미한다.
Thread.sleep(100);//0.1초 //호출하고 있는 스레드가 잠드는것
}catch(InterruptedException e) {
e.printStackTrace();
}
}
}
});
th3.start();
System.out.println("main 메서드 작업 끝..."); //Console창 상단 <terminate>뜸 : 프로그램이 끝났다는 뜻
}
}