提一个关于线程的概念问题。
关于下面这段程序的疑问主要是,对于TestB来说无论有几个TestB的对象,其TestA对象只有一个(因为它是static),那么对于运行的后的线程呢?他们是否每条线程中有包含一个TestA的副本呢?(因为我想不通,为什么5个线程都能知道自己是在什么地方挂起,又需要从什么地方开始被唤醒,所以我觉得是不是每个线程都有一个TestA对象的副本,以记录是在什么地方被挂起的)
class TestA{ public synchronized void myTest(){ try{ while(true){ wait(); System.out.println(Thread.currentThread() + ""); } }catch(InterruptedException e){ System.out.println("End Interrupted"); } } public synchronized void myNotifyAll(){ notifyAll(); }}class TestB implements Runnable{ static TestA testA = new TestA(); public void run(){ testA.myTest(); }}public class Test1{ public static void main(String[] args)throws Exception{ ExecutorService exes = Executors.newCachedThreadPool(); for(int i = 0; i < 5; i++){ exes.execute(new TestB()); } Timer timer = new Timer(); timer.schedule(new TimerTask(){ public void run(){ System.out.println("\nnotifyAll() "); TestB.testA.myNotifyAll(); } } ,400 ,400); TimeUnit.SECONDS.sleep(2); timer.cancel(); exes.shutdownNow(); }}