這篇文章給大家介紹Java中如何使用 class線程,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
class Test { public static void main(String[] args) { //定義Object對象o Object o = new Object(); //定義Runclass對象r Runclass r = new Runclass(); //注意這里,沒有將對象o和對象r的引用傳遞給兩個線程 Thread1 t1 = new Thread1(); Thread2 t2 = new Thread2(); t1.start(); t2.start(); } }
問題:兩個線程類的成員變量沒有賦值方法,也沒有初始化,所以其引用為空,在調用時會拋出NullPointerException
解決:兩個線程類的構造方法修改一下
Thread1(Runclass r, Object o) { this.r = r; this.o = o; } Thread2(Runclass r, Object o) { this.r = r; this.o = o; } 調用方法變成: public static void main(String[] args) { Object o = new Object(); Runclass r = new Runclass(); Thread1 t1 = new Thread1(r, o); Thread2 t2 = new Thread2(r, o); t1.start(); t2.start(); }
這樣就解決了NullPointerException不過程序其他地方還有問題,程序會拋IllegalMonitorStateException這涉及到線程同步,樓主對wait的理解還不夠,可以看看相關資料。在這個程序中,需要將同步的地方改成o.wait();和o.notify();因為鎖定的對象是Object o。
關于Java中如何使用 class線程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。