아래의 프로그램을 실행하고 있는데 어떤 이유로 run() 메소드가 보이지 않습니다. 기본적으로 나는 아래 threads.I이 결과를 얻고의 동작 탐지하는 것을 시도하고있다 :이
l79uho1tjtot7pcmk4vhh5t8qc l79uho1tjtot7pcmk4vhh5t8qc
깨워
Java에서의 스레드 동작
pqni392fr8dchsdmajglvuqsof pqni392fr8dchsdmajglvuqsof있다
adfapus6g1fst56daimrudkgji
adfapus6g1fst56daimrudkgji는
깨워했다 일어나 iqfo9knc99kcb622g36c77m62
iqfo9knc99kcb622g36c77m62 깨우기가
67vdpghqit1a입니다. 4iv3593451ps0a
67vdpghqit1a4iv3593451ps0a는 내가 자형은해야 스레드가 문제가되는 run() 메소드에 도착하고 있지 않다시피
깨워있다? 또 다른 질문은 스레드가 프로그램의 첫 번째 실행에서 run()을 실행할 수 있었기 때문입니다. 출력의 첫 번째 행이 항상 main()에서 왔기 때문입니다.
감사합니다.
import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Level;
import java.util.logging.Logger;
class myThread implements Runnable {
@Override// method run is to be executed by a new thread
public void run() {
System.out.println("I am here");
int timeRandom = new Random().nextInt(50);
try {
String ThrName = Thread.currentThread().getName();
Thread.sleep(timeRandom);
System.out.println("Thread " + ThrName + " sleeping " + timeRandom);
} catch (InterruptedException ex) {
Logger.getLogger(myThread.class.getName()).log(Level.SEVERE, null, ex);
}
// throw new UnsupportedOperationException("Not supported yet.");
}
}
class myClass {
static int nthread = 5;
public static void main(String[] args) {
ExecutorService myService = Executors.newFixedThreadPool(nthread);
while (nthread != 0) {
Thread.currentThread().setName(new BigInteger(130, new SecureRandom()).toString(32));
System.out.println(Thread.currentThread().getName());
myService.submit(Thread.currentThread());
System.out.println(Thread.currentThread().getName() + " has wake up");
//
nthread -= 1;
}
myService.shutdown();
}
}
** woken ** up – qdii
내가 할 때 익명의 스레드가 실행되고 있는데, 이미 이름을 설정 한 스레드가 아닙니다. 그리고 "Thread pool-1-thread-5 sleeping 8"과 같은 것을 얻을 수 있습니까? – user1207965
@ user1207965 당신이 실행중인 SAME 스레드의 이름을 바꾸고 있습니다 ... – MadProgrammer