多執行緒例項之簡單的賣票程式 ------記錄與畢向東老師視訊
/*簡單的賣票程式,多個視窗同時實現
1.定義類的實現Runnable介面
2.覆蓋Runnable介面中的run方法。將執行緒要執行的程式碼存放在該run方法中。
3.通過Thread類建立執行緒物件。
4.講Runnable介面的子類物件作為實際引數傳遞給Thread類的建構函式。
為什麼要將Runnable介面的子類物件傳遞給Thread建構函式?
因為自定義的run方法所屬的物件是Runnable介面的子類物件。
所以要讓執行緒去指定物件的run方法,就必須明確該run方法所屬物件。
5.呼叫Thread類的start方法開啟執行緒並呼叫Runnable介面子類的run方法。
實現方式和繼承方式有什麼區別呢?
實現方式好處,避免了單繼承的侷限性。
在定義執行緒時,建議使用實現方式
構造方法:
Thread(Runnabletarget )分配新的Thread物件
兩種方式區別:
繼承Thread:執行緒程式碼存放在Thread子類run方法中。
實現Runnable:執行緒程式碼存放在介面的子類的run方法中。
*/
class Ticketdemo implements Runnable { private int tick=20; public void run(){ while(true){ if(tick>0){ System.out.println(Thread.currentThread().getName()+"sale:"+tick--); } } } } public class Ticket{ public static void main(String[] args) { Ticketdemo t=new Ticketdemo(); Thread s1=new Thread(t); Thread s2=new Thread(t); Thread s3=new Thread(t); Thread s4=new Thread(t); s1.start(); s2.start(); s3.start(); s4.start(); } }
相關推薦
多執行緒例項之簡單的賣票程式 ------記錄與畢向東老師視訊
/*簡單的賣票程式,多個視窗同時實現 1.定義類的實現Runnable介面 2.覆蓋Runnable介面中的run方法。將執行緒要執行的程式碼存放在該run方法中。 3.通過Thread類建立執行緒物件。 4.講Runnable介面的子類物件作為實際引數傳遞給Thread類
java基礎--24.多執行緒的應用--電影院賣票程式的實現
A.多執行緒應用–電影院賣票程式的實現 A:繼承Thread類 B:實現Runnable介面 電影院賣票程式出問題 為了更符合真實的場景,加入了休眠100毫秒。 多執行緒賣票過程中可能出現的問題: a:同一張票多次出售
Java多執行緒-45-多執行緒安全問題--火車票賣票
這篇通過火車票賣票來逐步演示多執行緒的安全問題,加入一共賣100張火車票,分成4個視窗賣。也就是,四個視窗就是4個執行緒,如何保證4個視窗賣票都正確。 1.先實現4個視窗賣票的程式碼 package thread; public class Demo3_Ticket { publi
C語言多執行緒例項之pthread的應用(在windows下的應用(win7))
Pthread是由POSIX提出的一套通用的執行緒庫,在linux平臺下,它被廣泛的支援,而windows平臺下,卻並不被支援,而pthreads-w32為我們提供瞭解決方案,本文我們準備在我們的windows平臺下進行pthread-w32的安裝,在網路上有類
C++多執行緒例項之臨界區同步
本篇是對上一篇 進行了重構,增加了windos下的臨界區鎖。 臨界區的特點:非核心物件,只能在window下使用,linux下不能使用;只能在同一程序內的執行緒間使用,速度快。 互斥量特點:互斥量是核心物件,可以用於程序內也可以在程序間互斥,速度相對互斥量慢點,也可以
Android進階——多執行緒系列之非同步任務AsyncTask的使用與原始碼分析
AsyncTask是什麼 AsyncTask是一種輕量級的非同步任務類,它可以線上程池中執行後臺任務,然後把執行的進度和最終結果傳遞給主執行緒並主執行緒中更新UI,通過AsyncTask可以更加方便執行後臺任務以及在主執行緒中訪問UI,但是AsyncTask並
java中synchronized修飾程式碼塊(兩種建立執行緒的方式講解賣票程式)
格式: synchronized(類物件名 aa) { //同步程式碼塊 } 功能: synchronized(類物件名 aa)的含義是:判斷aa是否已經被其他執行緒所霸佔,如果發現已經被其他執行緒霸
黑馬程式設計師:畢向東java視訊之基礎篇
一、學習java預備工作: 1、dos命令列 dir:列出當前目錄下的檔案和資料夾 md:建立目錄 rd:刪除目錄 del:刪除檔案 exit::推出dos命令列 2、java特性:與平臺無關 原理:在執行java應用程
多執行緒例項一----三個視窗同時賣票
package com.shone.thread.ticket; /** * Created by Xiao GuoJian on 2018/1/24. * 三個視窗同時賣票 */ /** * 票 */ class Ticket { private i
NSURLSession和多執行緒網路之GCD簡單介紹(任務,佇列)
NSURLConnection是2003年伴隨著Safari一起發行的網路開發API,距今已經有十一年。當然,在這十一年間它表現的相當優秀,有大量的應用基礎,這也是為什麼前面花了那麼長時間對它進行詳細介紹的原因。但是這些年伴隨著iPhone、iPad的發展,對於NSURL
C++之多執行緒(POSIX多執行緒例項)
1.程序同時建立5個執行緒,各自呼叫同一個函式 #include <iostream> #include <pthread.h> //多執行緒相關操作標頭檔案,可移植眾多平臺 using namespace std; #define NUM_TH
多執行緒+佇列的簡單使用
以前在專案中很少用到佇列,其實佇列對於解決併發很是重要,今天著手看了相關資料並實際簡單操作,如下: 1.佇列的含義:佇列就是一種特殊的線性表,採用FIFO方式,而棧是LIFO方式。 2.常用的佇列:LinkedList實現了Queue的介面 3.佇列的
iOS總結-多執行緒篇之NSOperation和NSOperationQueue
參考:https://www.jianshu.com/p/4b1d77054b35 NSOperation/NSOperationQueue是基於GCD更高一層的封裝,完全面向物件。 優點:1.可新增完成的程式碼塊,在操作完成後執行
iOS總結-多執行緒篇之GCD之三
dispatch_barrier_async :GCD柵欄方法 dispatch_apply dispatch_semaphore:GCD訊號量 持有計數的訊號,計數為0時等待,不可通過.計數為1或者大於1時,計數減1且不等待,可通過. dispatch_semap
iOS總結-多執行緒篇之GCD之二
dispatch_group dispatch_wait dispatch_group_enter/dispatch_group_leave dispatch_group_enter標誌一個任務加入group,未執行完畢任務數+1 dispatch_group
iOS總結-多執行緒篇之GCD之一
程序:作業系統資源分配的基本單位 執行緒:任務排程和執行的基本單位 一個程序裡面可以有多個執行緒. GCD自動利用CPU核心(如雙核,四核),會自動管理執行緒的生命週期(建立執行緒,排程任務,銷燬執行緒) 而NSOperation Queue是可以管理執行緒的. 佇列
java多執行緒程式設計之使用Synchronized塊同步變數
通過synchronized塊來同步特定的靜態或非靜態方法。 要想實現這種需求必須為這些特性的方法定義一個類變數,然後將這些方法的程式碼用synchronized塊括起來,並將這個類變數作為引數傳入synchronized塊 下面的程式碼演示瞭如何同步特定的類方法:
python中的多執行緒threading之儲存程序結果Queue
程式碼實現功能,將資料列表中的資料傳入,使用四個執行緒處理,將結果儲存在Queue中,執行緒執行完後,從Queue中獲取儲存的結果 import threading from queue import Queue def job(l, q): for i in range
python中的多執行緒threading之新增執行緒:Thread()
百度百科:多執行緒 多執行緒(英語:multithreading),是指從軟體或者硬體上實現多個執行緒併發執行的技術。具有多執行緒能力的計算機因有硬體支援而能夠在同一時間執行多於一個執行緒,進而提升整體處理效能。具有這種能力的系統包括對稱多處理機、多核心處理器以及晶片級多處理(Chi
【JAVA多執行緒問題之死鎖】
一、死鎖是什麼? 舉個例子:兩個人一起吃飯,每個人都拿了一隻筷子,雙方都在等待對方將筷子讓給自己,結果兩個人都吃不了飯。這種情況和計算機中的死鎖情況很相似。 假設有兩個執行緒,互相等待對方釋放佔有的鎖,但是釋放鎖的條件又不可能形成,這時候死鎖就形成了。 還是買票的問題,有的時候時會發生死