package day6.thread;


class Parent{

}


class MyThread2 extends Parent implements Runnable{

//상속중일때 Thread 구현하는 Runnable 인터페이스

public void run() {

for (int i = 0; i < 10; i++) {

try {

Thread.sleep((int)(Math.random()*1000));

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println("C를 출력합니다.");

}


}

}



class MyThread extends Thread{

String name;

MyThread(String name){

this.name = name;

}

public void run() {

for (int i = 0; i < 10; i++) {

try {

sleep((int)(Math.random()*1000));

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(name + "A를 출력합니다.");

}

}

}




public class ThreadTest {

public static void main(String[] args) {

MyThread a = new MyThread("민철");

MyThread b = new MyThread("철민");

a.start();

try {

a.join();

} catch (InterruptedException e1) {

e1.printStackTrace();

}

b.start();

//Runable 인터페이스 사용할 때 선언

MyThread2 r = new MyThread2();

Thread c = new Thread(r);

c.start();

for (int i = 0; i < 10; i++) {

try {

Thread.sleep((int)(Math.random()*1000));

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println("B를 출력합니다.");

}

}

}



package day6.thread;

class BathRoomThread extends Thread{
BathRoom room;
String name;
BathRoomThread(BathRoom room, String name){
this.room = room;
this.name = name;
}

public void run() {
for(int i=0;i<20;i++){
room.use(name);
}
}
}


class BathRoom{
//synchronized 123이 끝날때까지 다른 접근 못함
boolean first = true;
public synchronized void use(String name){
if (first && name.equals("민")){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(name +"가 입장한다(1)");
System.out.println(name +"가 사용한다(2)");
System.out.println(name +"가 퇴장한다(3)");
first=false;
notifyAll();
//항상 김이 먼저 쓰도록 
}
}


public class ThreadTest2 {
public static void main(String[] args) {
BathRoom room = new BathRoom();
BathRoomThread a = new BathRoomThread(room, "김");
BathRoomThread b = new BathRoomThread(room, "민");
a.start();
b.start();
}
}



'Computer > JAVA' 카테고리의 다른 글

JAVA JDK설치  (0) 2015.01.19
Java Network  (0) 2014.08.29
Java FileCalculator  (0) 2014.08.29
Java FileController  (0) 2014.08.29
Java IO  (0) 2014.08.29

+ Recent posts