同步**塊:
synchronized(object) {}
其中object為我們使用的同步鎖,對於繼承的方式,使用this或者建立乙個非靜態物件作為鎖是無用的,無法阻止錯誤資料的產生。所以我們使用static的物件
同步方法:
public synchronized void method() {}
由於同步方法的鎖使用的是this,當前物件,所以也是無法起效果的。所以在繼承中,是不能使用同步方法操作共享資料的。
**: 繼承
在這裡我們使用的是 static型別的obj物件為鎖的同步**塊,避免了錯誤資料大帝問題。
package com.atguigu.thread;
public class ticketdemo2
}class ticket1 extends thread catch (interruptedexception e)
system.out.println(thread.currentthread().getname()+"售出車票,ticket號為:"+ tick--);
}else }}
}}
實現:
在這裡由於三個執行緒使用乙個物件,所以我們可以使用this作為鎖
package com.atguigu.thread;
public class ticketdemo3
}class tickettest implements runnable catch (interruptedexception e)
// } else
// break;
sale();
}} public synchronized void sale() catch (interruptedexception e)
} } }
iOS執行緒鎖NSLock案例 賣火車票
import rootviewcontroller.h inte ce rootviewcontroller 宣告總票數 property nonatomic assign nsinteger totaltickets 宣告剩餘票數 property nonatomic assign nsinteg...
c 多執行緒,2個執行緒模擬賣火車票的小程式
如果遇到 createmutexw 不能將引數 3 從 const char 8 轉換為 lpcwstr 的錯誤 可以在vs2010中,將專案的字符集,從 使用unicode字符集 改為 使用多位元組字符集 include windows.h include iostream.h dword win...
使用多執行緒實現賣火車票
1.使用多執行緒實現三個視窗同時售票,用繼承thread方式 package com public class deamo extends thread else catch interruptedexception e public static void main string args 執行後...