已采纳回答 / 慕婉清0689395
因为子类重写了父类的run方法,父类对象不能调用子类的重写的run方法;也可以通过父类对象去引用子类对象去实现调用子类的run方法Thread actor = new Threadx();
2017-05-12
已采纳回答 / Mad_Man_
wait()方法是让线程释放对象锁,让其他线程拿到锁之后去优先执行,当其他全程唤醒wait()中的线程 或者 拿到对象锁的线程都执行完释放了对象锁之后,wait()中的线程才会再次拿到对象锁从而执行。
2017-05-10
已采纳回答 / guolaikankan
Actor actor=new Actor(); 这个是重写了run方法,执行了才有输出内容Thread actor = new Thread()这个可以查看Java Thread 类的源码中run方法的实现,这个简单理解为不继承Thread类重写run方法,就是什么也不干的。
2017-05-06
已采纳回答 / 小羊杨
Tread的继承对象可以 直接使用getName(),而 Runnable的实现对象需要使用Thread.currentThread().getName()
2017-03-14
已采纳回答 / 乱星海
三个方法里至少有一个是notifyAll。假设三个都是notify(),当方法c运行完后,flag为1,此时如果a和b都已经在Wait Set中,且随机唤醒的是b,那么b随机又进入Wait set,c也进入Wait set,此时三个线程全部进入Wait set,造成了死锁。
2017-02-09
已采纳回答 / 福山润
代码1:两个线程同时走,他俩公用一个FlagSender对象里面的flag,当线程t1走第一遍时,flag等于false,不等待直接输出,然后将falg致成true,线程t1等待,这时候线程t2 while里面的!f.isFlag() 为false,所以往下进行输出又将flag致成false,这时线程t1又开始执行。以此类推。代码2:两个对象都在while里面进行死循环,所以只打印一次。
2017-02-04
已采纳回答 / bbug
java多线程可以近似看成同时执行,不过本质上计算机能同时工作的线程数是有限个的(取决于你的CPU)老师演示的时候农民军和隋军交替结果看起来应该是至少有两个线程是同时工作的。而你这个明显是仅分配给了这个程序一个线程。多线程是为了解决某些应用上需要等待其他的结果(比如浏览器访问一个网址需要等待服务器返回HTML文件才能继续执行显示页面的操作)才能继续执行,那么这段时间cpu可以去执行其他线程的程序。但是如果这个线程可以一口气执行下去的话,中途其他线程是没有办法执行的。-----------------以下是...
2017-01-04