본문 바로가기

IT일반과목/java

쓰레드1 (학원수업)

===============================

package jongkyu.test;


import java.util.Scanner;


public class Test2 implements Runnable {

@Override

public void run() {

Scanner sc = new Scanner(System.in);

while(true) {

int a=sc.nextInt();

if(a==1) {

Test1.count +=10;//Test1에있는 카운터 10 늘려라는 코드이다.

}else if(a==2) {

Test1.count =0;

break;//return이랑 break랑 상관이없다.

//break를 주면 while문을 나가기때문에 똑같다.

}

}

}

}


====================================
package jongkyu.test;

public class Test1 extends Thread{

public static int count=30;


@Override
public void run() {
while(true) {
if(count ==0) {
break;
}
System.out.println(count+"초 후 프로그램 종료(1을 누르는 경우 10초씩 증가)");
count--;
try {
Thread.sleep(1000);//1초마다 진행된다.

}catch(InterruptedException e) {
break;
}

}
}
}


==============================
package jongkyu.start;

import jongkyu.test.Test1;
import jongkyu.test.Test2;

public class Start {
public static void main(String[] args) {
Test1 t1 = new Test1(); //Thread 상속
Test2 t2 = new Test2(); //Runnable 상속
//쓰고싶은 멀티쓰레드 객체를 만들었다.
Thread th1 = t1; //Thread 상속의 경우 생략 가능
//Thread th2 = t2; //이렇게 해버리면 안된다. -> Thread th1은 t1을 상속받았다. 다형성이 적용되어있다. th1은 부모 t1은자식클래스이다.
//얘는 상속받은 녀석이 아니기 때문에 사용을 할려면
Thread th2 = new Thread(t2);//->이렇게 써줘야 한다.
th1.start();
th2.start(); //쓰레드의 호출을 할때는 쓰레드를 호출해야한다.
//여기까지면 쓰레드를 3개쓰는것이다. 우리가 작성한거 2개랑 main까지 하는것이다.
try {
//th1.join();//join의 의미는 th1이라는 쓰레드가 종료될때까지 기다린다.
th2.join(3000);//기다리는데 3초만기다리고 실행할꺼야..
//아무것도 안넣으면 끝날때까지고 넣으면 그 시간만큼만 기다린다.
//th1.interrupt(); //인터럽트는 쓰레드를 강제로 중지시킬때 사용
System.out.println("메인쓰레드 실행테스트");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


'IT일반과목 > java' 카테고리의 다른 글

자바 네트워크 다중접속 과제  (2) 2018.08.12
쓰레드2 (학원수업)  (0) 2018.08.10
네트워크 수업3 (야구게임) (과제)  (0) 2018.08.09
네트워크 수업2  (0) 2018.08.09
네트워크 수업1  (0) 2018.08.09