2012년 8월 2일 목요일

자바 쓰레드 5/10

안드로이드 쓰레드로 제목 나가다가 사람들이 혼돈할까봐 아직은 

자바 쓰레드다.

새롭게 FutureTask를 쓰는 방법이 나온다. 지난 소스를 주석 처리하고 조금 수정해 보았다.

Thread나 Runnable은 run()에다가 쓰레드 내용을 넣는다면

Future Task는 Callable 인터페이스를 쓰는 클레스 안에

call() 매소드에다가 내용을 넣는다. 차이점은 리턴값이 있고 없고라고한다(아래 소스에는 리턴이 없다.)



import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;

public class HelloWorld {

private volatile static int a = 0;

public HelloWorld() {

Runnable r = new IamFine("first");
Runnable rr = new IamFine("second");
final FutureTask fTask = new FutureTask(new MyCallable());

// Thread t1 = new Thread(r);
// Thread t2 = new Thread(rr);
//
// try {
// t1.start();
// t2.start();
// } catch (Exception e) {
// // TODO: handle exception
// }
// ExecutorService executorService = Executors.newFixedThreadPool(2);
// executorService.execute(r);
// executorService.execute(rr);
// executorService.shutdown();

ExecutorService excutor = Executors.newFixedThreadPool(1);
excutor.submit(fTask);
excutor.shutdown();

}

class IamFine implements Runnable {
String name;

public IamFine(String name) {
this.name = name;
}

public void run() {
while (true) {
// synchronized(java.lang.Object.class) {
a += 1;
System.out.println(name + "'s Current Count = " + a);
// }

try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

class MyCallable implements Callable {
@Override
public Object call() throws Exception {
for (;;) {
System.out.println("runnable과 뭐가 다른지... ㅋㅋ");

try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

public static void main(String[] args) {
System.out.println("Hello World.");
new HelloWorld();

}
}

기초니까... 리턴값 받을 때 까지 딜레이 되는걸 이용하는건 알아서...

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...