執行緒模擬賣車票

2021-10-05 01:37:58 字數 995 閱讀 7693

1、通過繼承的方式:

package com.company;

/** * @author jeffchan 2020/04/14

*/public class ticket extends thread

@override

public void run()

}}

模擬賣票的行為:

public class main 

}

2、通過實現介面的方式:

/**

* @author jeffchan 2020/04/14

*/public class runabletickets implements runnable

}}

模擬賣票行為:

public class main 

}

上面的兩個均能模擬多個視窗賣票的行為,但是,會出現執行緒安全的問題,有可能一張票被賣兩次,而且賣出的票的順序也是亂的,或者賣出不存在的0號票(多執行幾遍,應該能出現,如果出現不了,就在迴圈裡sleep一會)

通過實現runnale的方式,開三個售票視窗,同時加入同步**塊和使用lamba表示式:

package cn.yishijie;

public class client

}, "視窗1").start();

// 單純的執行緒類,同時將任務放入執行緒中

new thread(() ->

}, "視窗2").start();

// 單純的執行緒類,同時將任務放入執行緒中

new thread(() ->

}, "視窗3").start();

}}/**

* 車票資源類

*/class ticket catch (exception e) }}

}}

c 多執行緒,2個執行緒模擬賣火車票的小程式

如果遇到 createmutexw 不能將引數 3 從 const char 8 轉換為 lpcwstr 的錯誤 可以在vs2010中,將專案的字符集,從 使用unicode字符集 改為 使用多位元組字符集 include windows.h include iostream.h dword win...

多執行緒賣火車票的問題

同步 塊 synchronized object 其中object為我們使用的同步鎖,對於繼承的方式,使用this或者建立乙個非靜態物件作為鎖是無用的,無法阻止錯誤資料的產生。所以我們使用static的物件 同步方法 public synchronized void method 由於同步方法的鎖使...

iOS執行緒鎖NSLock案例 賣火車票

import rootviewcontroller.h inte ce rootviewcontroller 宣告總票數 property nonatomic assign nsinteger totaltickets 宣告剩餘票數 property nonatomic assign nsinteg...