原创 1.3.線程基礎_等待線程

等待線程 有時候我們需要等待其他線程完成後當前線程纔可以繼續執行。回顧之前的示例可以看到主線程和其他線程是併發運行的,回顧一下1.2中程序執行的日誌: 主線程:啓動線程 Thread-0:0 Thread-0:1 Thread-0:2 T

原创 3.4 取消任務

取消任務 概述 使用執行器時,不需要管理線程,只需要實現Runnable或Callable任務併發送任務給執行器即可。執行器負責創建線程,管理線程池中的線程,當線程不再需要時就銷燬它們。有時候,我們可能需要取消已經發送給執行器的任務,這

原创 Lambda FAQ_16.鑽石問題

鑽石問題 “鑽石問題”是允許多繼承所帶來的問題。對於允許狀態的多繼承語言來說(比如C++)這是一個嚴重的問題。但是,在Java中是不允許類的多繼承,僅僅允許接口多繼承,所以是不包含狀態的。 考慮下面的場景: interface A {

原创 有經驗的Java開發者和架構師容易犯的10個錯誤(上)

首先允許我們問一個嚴肅的問題?爲什麼Java初學者能夠方便的從網上找到相對應的開發建議呢?每當我去網上搜索想要的建議的時候,我總是能發現一大堆是關於基本入門的教程、書籍以及資源。同樣也發現網上到處充斥着從寬泛的角度描述一個大型的企業級

原创 115個Java面試題和答案——終極列表(下)

第一篇討論了面向對象編程和它的特點,關於Java和它的功能的常見問題,Java的集合類,垃圾收集器,本章主要討論異常處理,Java小應用程序,Swing,JDBC,遠程方法調用(RMI),Servlet和JSP。異常處理 Java小應

原创 Lambda FAQ_17.Java的集合要去向何方

Java的集合要去向何方 在Java8發佈時Java集合框架已經超過15歲了,雖然它發展的很好,但是隨着Java語言運行環境的改變Java集合框架內在的一些假設慢慢變成了問題。最大的變化是在硬件環境,硬件設計者已經將他們的注意力從增加

原创 Lambda FAQ_15.如何解決方法聲明之間的衝突

如何解決方法聲明之間的衝突? 因爲可以從多個接口繼承,所以相同的默認方法能夠從不同的路徑繼承而來。因爲每個繼承的默認方法提供不同的實現,編譯器需要一個一種方式來選擇使用哪個聲明。下面是編譯器的選擇方式: 類總是優先的。在類或者子類中

原创 搭建高可用的MongoDB集羣(上):MongoDB的配置與副本集-1

在大數據的時代,傳統的關係型數據庫要能更高的服務必須要解決高併發讀寫、海量數據高效存儲、高可擴展性和高可用性這些難題。不過就是因爲這些問題Nosql誕生了。 NOSQL有這些優勢: 大數據量,可以通過廉價服務器存儲大量的數據,輕鬆擺脫

原创 Lambda FAQ_14.默認方法是否給Java引入了多重繼承

默認方法是否給Java引入了多重繼承? 當然不是,因爲Java中已經有了多重繼承。在語言最開始就有接口類型的多繼承特性。默認方式確實引入了一種新的多繼承方式,稱之爲行爲多繼承。Java仍然沒有類似C++中的狀態多繼承。 下面是一個行

原创 115個Java面試題和答案——終極列表(上)

本文我們將要討論Java面試中的各種不同類型的面試題,它們可以讓僱主測試應聘者的Java和通用的面向對象編程的能力。下面的章節分爲上下兩篇,第一篇將要討論面向對象編程和它的特點,關於Java和它的功能的常見問題,Java的集合類,垃圾收

原创 搭建高可用的MongoDB集羣(下)-1

MongoDB公司原名10gen,創立於2007年,在2013年收到一筆2.31億美元的融資後,公司市值評估已增至10億美元級別,這個高度是知名開源公司Red Hat(創建於1993年)20年的奮鬥成果。 高性能、易擴展一直是Mong

原创 搭建高可用的MongoDB集羣(上):MongoDB的配置與副本集-2

這篇文章看完這些問題就可以搞定了。NoSQL的產生就是爲了解決大數據量、高擴展性、高性能、靈活數據模型、高可用性。但是光通過主從模式的架構遠遠達不到上面幾點,由此MongoDB設計了副本集和分片的功能。這篇文章主要介紹副本集: m

原创 1.6.線程基礎_守護線程

守護線程 Java有種線程叫做守護(Deamon)線程。這種線程優先級很低,通常是無限循環的,作爲服務提供者。守護線程是的優先級的,而且當程序中只有守護線程時,程序會退出運行。所以守護線程不能做重要的工作,因爲它不能保證什麼時候被分配到資

原创 2.1.線程的同步和協作_基本同步

基本同步 同步概述 多個線程共享一個資源的場景非常常見,比如多個線程讀或者寫相同的數據等。爲了防止共享資源可能出現的錯誤或數據不一致,需要有一些機制來防止錯誤的發生。 臨界區(Critical Section)是指訪問共享資源的代碼塊

原创 2.2.線程的同步和協作_基本協作

基本協作 併發編程中有時需要線程間進行協作,典型的問題是生產者-消費者問題:有一個數據緩衝區,一個或多個生產者將數據存入這個緩衝區,一個或多個數據消費者將數據從緩衝區中取走。這裏有兩個問題要解決: 緩衝區是一個共享數據結構,必須使用