아래 코드에서 Thread t1이 Runnable 생성을 실행하고 Thread t2가 Runnable 실행을 실행하도록합니다. 이게 효과가 있니?2 개의 스레드에 대해 하나의 Runnable을 사용하여 하나가 생성되고 하나가 소비되도록 할 수 있습니까?
class Processor implements Runnable {
@override
run(){
produce();
consume();
}
void produce(){
// code to produce, synchronize
}
void consume(){
// code to consume, synchronize
}
}
Class App {
public static void main(String[] args){
Processor p = new Processor()
Thread t1 = new Thread(p);
t1.start();
Thread t2 = new Thread(p);
t2.start();
}
}
시도하면 어떻게됩니까? run() 메소드의 절반만이 하나의 스레드에 의해 실행되고 나머지 절반은 두 번째 스레드에 의해 실행된다고 생각하게 만드는 요인은 무엇입니까? –
디버그는 친구 –
가능한 복제 http://stackoverflow.com/q/9562505/877472입니다. 그리고 다른 사람들이 말했듯이,'produce()'와'consume()'이 프로그램 흐름을 바꾸지 않고'run()'메소드에서 호출되고 있다면, 두 스레드는 똑같은 방식으로 동작 할 것입니다. –