多執行緒賣火車票的問題

2021-07-15 08:07:28 字數 1008 閱讀 1772

同步**塊:

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 執行後...