本帖最后由 林铁柱 于 2011-12-21 10:13 编辑
昨天晚上看畢老師的視頻=====黑马程序员_毕向东_Java基础视频教程第11天-08-多线程(创建线程-实现Runnable接口)=====在這節課里,我按照老師講的做了筆記,同樣是運行代碼我的怎麼就出了問題?
一下是代碼部份:
class Ticket implements Runnable//extends Thread
{
private int tick = 100;
Object obj = new Object();
public void run()
{
while(true)
{
synchronized(obj)
{
if(tick>0)
{
try
{
Thread.sleep(10);
}
catch (Exception e){}
System.out.println(Thread.currentThread().getName()+"....sale : "+tick--);
}
}
}
}
}
class TicketDemo2
{
public static void main(String[] args)
{
Ticket t = new Ticket();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
Thread t3 = new Thread(t);
Thread t4 = new Thread(t);
t1.start();
t2.start();
t3.start();
t4.start();
/*
Ticket t1 = new Ticket();
Ticket t2 = new Ticket();
Ticket t3 = new Ticket();
Ticket t4 = new Ticket();
t1.start();
t2.start();
t3.start();
t4.start();
*/
}
}
程序運行出現兩個錯誤:
1、只出現Thread-0,其他線程貌似為啟動
2、程序運行到最后,不退出java VM,也不繼續運行
在下實在想不出癥結之所在,特在此求助,希望有大神級的人才幫我解決這個問題。
還有,大家說我們在用暴風看電影時候,突然點一下“暫停”,是不是調用了類似于Thread.wait()這樣的方法呢?? |