首次護照申辦便民一處服務 全國戶政8/12正式開辦

外交部與內政部合作「首次申請護照親辦一處收件全程服務便民措施」,12日正式擴大推展至全國各戶政事務所同步開辦,以「線上傳輸」取代「人力遞送」,秉持單一收件、全程服務,有效降低錯誤率及節省戶所人力負擔,落實數位國家智慧服務理念,同時鼓勵民眾申辦自動通關,體驗更便捷的出國經驗。

桃園市長鄭文燦11日上午9時30分在市府民政局長陳靜航、秘書處長顏子傑、桃園區長陳玉明的陪同中,前往桃園區戶政事務所,出席「首次申請護照親辦一處收件全程服務便民措施」全國開辦活動,內政部政務次長陳宗彥、外交部政務次長曾厚仁、外交部領事事務局長葉非比、立法委員呂玉玲、黃世杰、湯蕙禎、市議員陳美梅、黃家齊也到場參加。

鄭文燦市長指出,台灣有良好的戶政系統、身分識別及資訊化能力,護照申辦亦是基本的為民服務,桃園早於去(108)年2月15日起,即以人力遞送方式,提供代收、代辦、代領「首次申請護照親辦一處收件全程服務便民措施」,執行期間約計有1萬8,437件,成效良好。

今(109)年3月16日起,外交部與內政部擇定桃園各戶政事務所及台中市、雲林縣、嘉義市、屏東縣、澎湖縣等地部分戶政事務所參與試辦,以線上傳輸取代人工遞送,雖受疫情影響送件數較少,但桃園戶政資料庫及勾稽系統運作良好,仍有552件申請案,約為人工試辦階段的三分之一。

鄭文燦也鼓勵國人利用疫情期間,預先申辦好護照,銷售文案同時申請自動通關,不僅可體驗「類出國」樂趣,也盼未來國人往返國外觀光旅遊、就學或進行商貿活網頁設計公司動時,在護照核發、機場通關時都能享有更便捷的服務。

內政部政務次長陳宗彥表示,全台台北網頁設計設有231個戶所,將近5,400位戶所同仁,網頁設計完整的戶政系統及資料庫,可有效協助國人護照申辦作業。自100年起,內政部啟動人別確認系統,為了提升便民申辦服務,包括桃園的各縣市,於去年陸續推動首次申請護照代收、代辦業務,今年3月16日起,外交部與內政部擇定戶所及民政體系服務良好的桃園及其他各縣市戶所參與試辦,獲得不少好評,因此今日擴大至全國開辦,盼國人於疫情期間,先行分散申辦,待疫情緩解、國境解封後,即可體驗出國樂趣。

外交部政務次長曾厚仁表示,台灣晶片護照技術先進且具難以偽造的安全性,在全球深受歡迎,iphone維修國人至約150個國家訪問參觀,可享免簽證及落地簽證等待遇。外交部與內政部合作「首次申請護照親辦一處收件全程服務便民措施」初期設計未臻完台北網頁設計善,逐步調整改善後,打造今日適用全國開辦的2.0版本,一站式服務新北清潔每年約可嘉惠40萬名首次申辦護照的民眾,節省兩地奔波的時間和金錢,盼將服務發揮最大效益,藉此回饋同仁多時的努力和付出。

民政局長陳靜航則表示,「首次申請護如何寫文案照親辦一處收件全程服務」便民措施,針對首次申請護照到戶政事務所辦理人別確認的民眾,進一步提供代送申請、代領護照的「一站式」服務。首次申請護照的民眾,可備妥文件到戶政事務所送件,並可選擇在同一個戶政事務所領取護照,或是自付郵資將護照寄到指定的地址。

戶政事務所將護照申請資料上傳到外交部審核及製發護照,民眾只要持戶政租車事務所開立的繳款證明單到指定的5大超商、郵局或農漁會繳納護照規費(每件須另付手續費15元),在繳費後8個工作天,即可依選擇的領照方式到原送件的戶政事務所領取護照,或是在護照寄達指定地址時自付快遞費用。

陳靜航指出,若首次申請護照又急需使用的民眾,仍可至各戶政事務所辦理人別確認後,再委託親屬、同事或旅行社代為到外交部領事事務局、中部、南部、雲嘉南或東部辦事處送件申請,或親自到上述外交部各申辦地點送件。此外,外交部為鼓勵民眾多加利用「一站式」的申辦流程,凡自即日起至12月11日止,到戶政事務所採用「一站式」申辦護照的申請人,都將自動列入抽獎名單,並於年底舉辦抽獎致贈精美小禮物1份。

世界最快螞蟻 步頻是波爾特10倍以上

摘錄自2019年10月17日自由時報報導

報導,德國烏爾姆大學(University of Ulm University)生物行為專家普費弗(Sarah Pfeffer)所率領的團隊,發現撒哈拉銀蟻是世界上最快的螞蟻,每秒秒速將近1公尺,看起來雖然不多,但驚人步頻(跑步時腳步交換的頻率)可是世界百米紀錄保持人波爾特(Usain Bolt)的10倍以上。

撒哈拉銀蟻可以用每秒47步跑完85.5公分,這距離達到了牠們體長的108倍之多,如果拿家貓的體型來比喻的話,撒哈拉銀蟻的速度大約是貓貓以時速193公里奔跑。這是因為牠們全速奔跑時,6隻腿會一起騰空再落地,看起來就像是在短暫飛行,在每次換步時,銀蟻每條腿的觸地時間不到7毫秒。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※台北網頁設計公司全省服務真心推薦

※想知道最厲害的網頁設計公司"嚨底家"!

新北清潔公司,居家、辦公、裝潢細清專業服務

※推薦評價好的iphone維修中心

「敢檢討核電海嘯對策就開除你喔!」 解析處處矛盾的福島核災判決

文:宋瑞文(媽媽監督核電廠聯盟特約撰述)

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

※回頭車貨運收費標準

象牙海岸法令鬆綁 開放可可業剷平雨林

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

新北清潔公司,居家、辦公、裝潢細清專業服務

※教你寫出一流的銷售文案?

植樹遏止氣候變遷 科學家說成效被高估

摘錄自2019年10月23日中央通訊社馬來西亞報導

科學家警告說,全球大規模植樹遏止氣候變遷風險的可能成效被高估。今年7月,蘇黎世聯邦理工學院(ETH Zurich)柯勞瑟實驗室(Crowther Lab)的研究人員發布研究報告,提出控制氣候變化的最好方法,就是在面積與美國相當的被毀森林重新植樹。

但德國波昂大學(University of Bonn)和位於奈洛比的世界農林複合研究中心「世界混農林業中心」(World Agroforestry Center)的科學家,18日在期刊「科學」(Science)發表回應文指出,在原先研究中可以在土地上種植的樹木數量有限。

波昂大學作物科學與資源保育研究所(Institute of Crop Sciences and Resource Conservation)教授魯德林(Eike Luedeling)表示,植樹造林不應被視為減少使用化石燃料排放的替代方案。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※幫你省時又省力,新北清潔一流服務好口碑

※別再煩惱如何寫文案,掌握八大原則!

防空污 印度排燈節只准燃放綠色環保鞭炮

摘錄自2019年10月22日中央通訊社印度報導

印度國家首都區這幾天空氣污染持續在「不佳」(poor)狀態,為避免排燈節燃放鞭炮惡化空氣品質,印度最高法院今天(22日)宣布,只有兩種綠色環保、被稱為anar和phuljhari的無聲鞭炮,可以在27日排燈節(Diwali)燃放,其他吵雜的鞭炮和煙火都被禁止。

被允許在印度宗教節日排燈節燃放的鞭炮將有印度政府認證標章和快速響應矩陣圖碼(QR code),警方呼籲消費者在購買鞭炮時要認明標章和QR code。新德里電視台(NDTV)引述德里警察局發言人藍大瓦(MS Randhawa)說,警方已組成檢查小組,如果有商家販售其他類型的鞭炮和煙火,警方將會採取法律行動。

主管環保的印度中央政府部長瓦德漢(Harsh Vardhan)表示,綠色環保鞭炮的懸浮粒子含量減少25%到30%,二氧化碳排放減少50%,有助降低鞭炮燃放對空氣品質的影響。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

新北清潔公司,居家、辦公、裝潢細清專業服務

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

「人造葉」設備啟蒙自光合作用 可生產乾淨燃料「合成氣」

摘錄自2019年10月22日科技新報報導

科學家開發出太陽能燃料領域一種新設備,可以利用陽光將水、二氧化碳轉化成用來發電的燃料「合成氣」,因轉化過程有如植物光合作用,而被暱稱為「人造葉」。

合成氣是一種利用氣化技術(gasification technology)將煤炭、石油、生質物等含碳原料轉化成一氧化碳與氫氣、然後混合而成的產物,本身可充當燃料氣體,主要用途為發電,也可用來生產藥品、塑膠、肥料等。

而英國劍橋大學團隊花費多年時間設計出人造葉,包含二種先進的鈣鈦礦光吸收劑和一種由鈷製成的分子催化劑,前者作用類似植物中吸收陽光的分子,鈣鈦礦可提供更高的電壓與電流驅動化學反應;後者則是代替鉑或銀,不僅成本較低,催生一氧化碳的表現也比其他催化劑好。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

新北清潔公司,居家、辦公、裝潢細清專業服務

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

※教你寫出一流的銷售文案?

2020-為什麼換了工作

摘要

經歷了一個特殊的2020上半年,疫情出乎意料的持續了半年之久,還是沒有看到結束的趨勢。雖然外部環境很惡劣,還是做出了個人的重大選擇,換工作。期間糾結了很久,畢竟工作就是生活,換工作就是對未來的期待,對過去的總結,對自己的人生的深度思考。這裏回顧下當時的個人思考,供後續復盤參考。

當前的狀況

2020,本科畢業的第六年,不再像剛畢業那會,覺得換公司是輕而易舉的事,考慮的事情越來越多。
畢業五年開始就越發的焦慮,這是當時的心境
2019年春-當前的困境、
2019秋-走的太久忘記了為什麼出發

總結起來

  1. 在擁抱變化的過程中,沒有匹配上自己的個人目標
  2. 工作多年還依然在糾結擅長和喜歡

老馬說的員工想要離職無非兩個原因

  1. 錢沒給到位
  2. 心委屈了
    分別是物質和精神方面。算是高度概括了。細分起來就是三方面錢、人、事。

錢的計算相對比較複雜了。

  1. 時薪和月薪
    月薪20K 的996,和15K的965相比,時薪還要低不少。但是如何選擇,每個人的情況不一樣,選擇不一樣
  2. 月薪和總包
    互聯網公司的總包除了現金部分還包括股票或者期權。一般分4年歸屬,待滿兩年才能拿到一半。股票的價值不好估算,畢竟二級市場波動很大。對比股票,期權價值就更不好估算了。因為沒上市的公司估值的水分很大,另外不一定能兌現,畢竟上市沒那麼容易。但是機會和風險並存,創業公司會給很多期權來吸引(忽悠)人才加入。你想獲得高額的回報甚至是財務自由,就得冒很大的風險。

所以總收入: 現金 + 風險係數 * 股票/期權價值。 同時考慮你的時間比。

那對於當前的我來說,缺錢,但是不是缺工作跳槽的錢。怎麼說呢,就是生活基本物質得到了保障,但是更高的需求無法滿足,而這些多出來的需求靠換工作是滿足不了。所以錢不是重點考慮的。

互聯網的從業人員的個人素質相對比較高,加上工作專業度比較高,所以都比較簡單,沒那麼多亂七八糟的人情世故需要去處理。所以相處起來還比較愉快。

但是人與人之間是有磁場的,不是每個人都能和你對脾氣、遇到合適的領導,相近的同事也沒那麼容易,另外建立關係也需要時間。這個對於跳槽是減分項。

事包含兩部分,一部分是成就感,一部分個人成長機會。也就是通常說的借人成事、借事修人。

馬斯洛需求理論最高層級就是自我實現。對於互聯網人,每天除了睡覺,70%以上時間都給了工作,那自我實現肯定要在工作中實現。

那對於我個人而已,相對穩定的業務,確定性比較高,沒什麼發展前景的就沒什麼吸引力。希望是有挑戰性的工作,能把事情做成功,並且自己能夠在其中發揮重要的作用。

個人成長其實就是未來。個人成長不是一蹴而就的,短期內不易覺察。但是非常重要,互聯網更新很快,你沒跟上就被淘汰了。對於廣泛流傳的程序員成長路線,3年高工,7年架構,10年外賣。

雖然是調侃,但是也說明了幾點內容

  1. 更新迭代很快的互聯網對大齡人不是很友好,你必須要持續成長。恍惚中我就工作6年,在互聯網行業中都算一個老兵了。
  2. 互聯網人的職業發展與其他行業發展曲線不一樣。一個發展很快,新知識很多的領域,個體是永遠追不上行業的發展水平的。

總結來說,發展是當前跳槽的主要考慮因素。

跳槽的期望

有了換工作的想法,是對現狀的不滿,但是換一個環境並不意味着問題的解決。這也是為什麼很多人經常抱怨公司的不好,但是不挪窩的原因。我們不能寄希望於未知的事情。尤其是從18年底開始互聯網整體再走下坡路,就業環境並不好,加上今年疫情的原因,外部環境更加惡化。

但是大環境不好,不代表個體就不好。不確定性很多不代表沒有確定性的東西。人的一生就是在不斷選擇中度過的,我們必須要了解自己,抓住重點,匹配自己與環境。

那麼我的個人期望是怎麼樣的,新的工作能滿足我的期望嗎?

職業發展

之前迷茫過還要不要做程序員,能不能轉行到產品,諮詢,售前。現在不能說篤定了一直做技術,但是找到了一些發展規律。

  1. 不會再去做偏底層的技術
    以前做過大數據,BI,甚至3年前還拿到過大數據工程師的offer,現在也深入了解了運維、中間件相關的工作內容。徹底打消了偏技術側的技術開發。
  2. 解決問題為驅動
    問題為導向,離業務越近越好。通過技術來驅動業務,非技術手段來解決業務問題。

這個算是近兩年個人的一個不小的突破,排除了哪些事不會去做,哪些事要去嘗試探索。

行業

行業涉及面太廣了,現在toC不好做,巨頭林立把用戶時間都擠佔了。toB 更難了,工具效率型的,國內目前付費意願並不強,能幫助企業帶來收入的才能發展的下去。

個人目前對具體做哪個行業的並沒有那麼執着。更多的期望是能夠以某個點切入到某個行業,然後看到如何通過互聯網技術把問題解決了,形成閉環,把事情做成功了。這種成就感足以讓我興奮。因為這些年,在不同的公司做各種創業項目,都沒有做成功的,都因為各種原因死掉了。正因如此,才知道創業是如何的艱難與不易。

通過自我的剖析和明確當前職業發展目標,在2020年春夏之際,我成功換了工作。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※台北網頁設計公司全省服務真心推薦

※想知道最厲害的網頁設計公司"嚨底家"!

新北清潔公司,居家、辦公、裝潢細清專業服務

※推薦評價好的iphone維修中心

Jmeter系列(32)- 詳解 CSV 數據文件設置

如果你想從頭學習Jmeter,可以看看這個系列的文章哦

https://www.cnblogs.com/poloyy/category/1746599.html

 

了解一哈什麼是 CSV 文件

  • 為了實現簡單的數據存儲,是一個純文本的文件
  • 最通用的一種文件格式,它可以非常容易地被導入各種PC表格及數據庫中
  • CSV 文件可以用記事本、excel打開;用記事本打開的話,每一列數據都用逗號隔開

 

為什麼要用 CSV 數據文件?

  • 從外部導入測試數據,相當於數據參數化
  • 通過從文件中導入大量的測試數據,來模擬大量真實用戶發送併發請求

 

CSV 數據文件設置

 

CSV 數據文件設置界面介紹

 

字段含義

字段 含義
Filename 文件名
File encoding 文件編碼
Variable Names
  • 變量名稱
  • 多個變量用 , 分隔
Ignore first line
  • 忽略首行
  • 只在設置了變量名稱后才生效
Delimiter
  • 分隔符
  • 默認 , 
Allow quoted data? 是否允許帶引號
Recycle on EOF? 遇到文件結束符EOF 后再次循環
Stop thread on EOF? 遇到文件結束符EOF 后停止運行線程?
Sharing mode 線程共享模式

後續通過各種栗子來深入理解常用字段的含義

 

單個字段的栗子

csv 測試數據

這裏用記事本方式當 CSV 數據文件,共有 10 條記錄

 

線程組結構樹

${num} 是計數器裏面聲明的變量,從 1 開始遞增到 15

 

線程組屬性

線程數和數據量一致,都是 15

 

csv 數據文件設置

 

運行結果

 

知識點

  • 忽略首行 True:一般首行都是字段名字,比如栗子的 mobile,一般都需要忽略除非沒有字段名
  • 是否允許帶引號 False:可以看到有引號的三條記錄 8、9、10,都還是保留了引號
  • 再次循環 True:csv 文件共有 10 條記錄,但線程數有 15 個,循環 10 次后,重頭開始循環;可以看到 11-15的手機號和1-5的手機號
  • 停止線程 False:取了 10 次值之後就到了文件尾部,但並不會停止運行線程,後面會舉個反例

 

多個字段的綜合栗子

csv 測試數據

兩個字段,共有 10 條記錄,最後三條記錄有分別有三種引號

 

csv 數據文件設置

線程組結構樹和上面栗子差不多一樣,線程數仍然 = 15

和第一個例子的配置項相反:不忽略首行,允許帶引號,遇到文件結束符不再循環

 

運行結果

  • 不忽略首行就會把首行的字段名都返回回來,如:1-mobile-age
  • 數據有雙引號 “” 時,會把雙引號忽略掉,  單引號不算
  • EOF 是文件結束符,沒有開啟再次循環時,會直接返回 EOF

 

開啟遇到文件結束符停止線程

還是上個栗子的線程組,只是改了下配置項

 

運行結果

可以看到,線程數 = 15,但只有 10 條數據,當跑了 10 個線程后,沒有數據了,所以停止運行

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

※回頭車貨運收費標準

Java 多線程基礎(十二)生產者與消費者

 Java 多線程基礎(十二)生產者與消費者

一、生產者與消費者模型

生產者與消費者問題是個非常典型的多線程問題,涉及到的對象包括“生產者”、“消費者”、“倉庫”和“產品”。他們之間的關係如下:

①、生產者僅僅在倉儲未滿時候生產,倉滿則停止生產。
②、消費者僅僅在倉儲有產品時候才能消費,倉空則等待。
③、當消費者發現倉儲沒產品可消費時候會通知生產者生產。
④、生產者在生產出可消費產品時候,應該通知等待的消費者去消費。

生產者消費者模型具體來講,就是在一個系統中,存在生產者和消費者兩種角色,他們通過內存緩衝區進行通信,生產者生產消費者需要的資料,消費者把資料做成產品。生產消費者模式如下圖。

在日益發展的服務類型中,譬如註冊用戶這種服務,它可能解耦成好幾種獨立的服務(賬號驗證,郵箱驗證碼,手機短信碼等)。它們作為消費者,等待用戶輸入數據,在前台數據提交之後會經過分解併發送到各個服務所在的url,分發的那個角色就相當於生產者。消費者在獲取數據時候有可能一次不能處理完,那麼它們各自有一個請求隊列,那就是內存緩衝區了。做這項工作的框架叫做消息隊列。

二、生產者與消費者實現

下面通過生產包子的例子及wait()/notify()方式實現該模型(後面學習線程池相關內容之後,再通過其它方式實現生產/者消費者模型)。

麵包類:

public class Bread {
    private int capacity;    // 麵包的容量
    private int size;        // 麵包的實際數量
    public Bread(int capacity) {
        this.capacity = capacity;
        this.size = 0;
    }
    
    // 生產麵包
    public synchronized void produce(int val) {
        try {
             // left 表示“想要生產的數量”(有可能生產量太多,需多此生產)
            int left = val;
            while (left > 0) {
                // 庫存已滿時,等待“消費者”消費產品。
                while (size >= capacity)
                    wait();
                // 獲取“實際生產的數量”(即庫存中新增的數量)
                // 如果“庫存”+“想要生產的數量”>“總的容量”,則“實際增量”=“總的容量”-“當前容量”。(此時填滿倉庫)
                // 否則“實際增量”=“想要生產的數量”
                int inc = (size+left)>capacity ? (capacity-size) : left;
                size += inc;
                left -= inc;
                System.out.printf("%s produce(%3d) --> left=%3d, inc=%3d, size=%3d\n",
                        Thread.currentThread().getName(), val, left, inc, size);
                // 通知“消費者”可以消費了。
                notifyAll();
            }
        }catch(InterruptedException e) {
            e.printStackTrace();
        }
    }
    // 消費麵包
    public synchronized void consume(int val) {
        try {
             // left 表示“客戶要消費數量”(有可能消費量太大,庫存不夠,需多此消費)
            int left = val;
            while (left > 0) {
                // 庫存為0時,等待“生產者”生產產品。
                while (size <= 0)
                    wait();
                // 獲取“實際消費的數量”(即庫存中實際減少的數量)
                // 如果“庫存”<“客戶要消費的數量”,則“實際消費量”=“庫存”;
                // 否則,“實際消費量”=“客戶要消費的數量”。
                int dec = (size<left) ? size : left;
                size -= dec;
                left -= dec;
                System.out.printf("%s consume(%3d) <-- left=%3d, dec=%3d, size=%3d\n",
                        Thread.currentThread().getName(), val, left, dec, size);
                notifyAll();
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

生產者類

public class Producer{
    Bread bread;
    public Producer(Bread bread) {
        this.bread = bread;
    }
    public void produce(final int val) {
        new Thread(() -> {
            bread.produce(val);
        }).start();;
    }
}

消費者類

public class Customer {
    private Bread bread;
    public Customer(Bread bread) {
        this.bread = bread;
    }
    public void consume(final int val) {
        new Thread(() -> {
            bread.consume(val);
        }).start();;
    }
}

測試類代碼

public class Demo {
    public static void main(String[] args) {
        Bread bread = new Bread(100);
        Producer producer = new Producer(bread);
        Cunstomer customer = new Customer(bread);
        
        producer.produce(60);
        producer.produce(120);
        consumer.consume(90);
        consumer.consume(150);
        producer.produce(110);
    }
}
// 運行結果
Thread-1 produce( 60) --> left=  0, inc= 60, size= 60
Thread-5 produce(110) --> left= 70, inc= 40, size=100
Thread-4 consume(150) <-- left= 50, dec=100, size=  0
Thread-2 produce(120) --> left= 20, inc=100, size=100
Thread-3 consume( 90) <-- left=  0, dec= 90, size= 10
Thread-4 consume(150) <-- left= 40, dec= 10, size=  0
Thread-5 produce(110) --> left=  0, inc= 70, size= 70
Thread-4 consume(150) <-- left=  0, dec= 40, size= 30
Thread-2 produce(120) --> left=  0, inc= 20, size= 50

說明:

①、Producer是“生產者”類,它與“麵包(bread)”關聯。當調用“生產者”的produce()方法時,它會新建一個線程並向“麵包類”中生產產品。
②、Customer是“消費者”類,它與“麵包(bread)”關聯。當調用“消費者”的consume()方法時,它會新建一個線程並消費“麵包類”中的產品。
③、Bread是麵包類,記錄“麵包的產量(capacity)”以及麵包當前實際數目(size)”。
        麵包類的生產方法produce()和消費方法consume()方法都是synchronized方法,進入synchronized方法體,意味着這個線程獲取到了該“麵包”對象的同步鎖。這也就是說,同一時間,生產者和消費者線程只能有一個能運行。通過同步鎖,實現了對“殘酷”的互斥訪問。
       對於生產方法 produce() 而言:當麵包量滿時,生產者線程等待,需要等待消費者消費產品之後,生產線程才能生產;生產者線程生產完麵包之後,會通過 notifyAll() 喚醒同步鎖上的所有線程,包括“消費者線程”,即我們所說的“通知消費者進行消費”。
      對於消費方法consume()而言:當倉庫為空時,消費者線程等待,需要等待生產者生產產品之後,消費者線程才能消費;消費者線程消費完產品之後,會通過 notifyAll() 喚醒同步鎖上的所有線程,包括“生產者線程”,即我們所說的“通知生產者進行生產”。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

新北清潔公司,居家、辦公、裝潢細清專業服務

※教你寫出一流的銷售文案?