新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java class線程源代碼學習全過程
Java class線程需要我們不斷的學習,在長期的使用中會出現(xiàn)很多的問題,下面我們就從Java class線程的源代碼中看看如何才能更好的解決相關問題,希望大家有所收獲。

站在用戶的角度思考問題,與客戶深入溝通,找到廈門網(wǎng)站設計與廈門網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設計、網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋廈門地區(qū)。
- 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多線程如何解決關鍵字封鎖問題
- Java多線程中wait語句的具體使用方法
- Java多線程如何創(chuàng)建多個線程
- Java多線程優(yōu)化之偏向鎖原理分析
- Java多線程初學者指南系列教程
分享標題:Java class線程源代碼學習全過程
本文URL:http://www.dlmjj.cn/article/dhisgpp.html


咨詢
建站咨詢
