摘要:
一.synchronized的缺陷 synchronized是java中的一個關鍵字,也就是說是Java語言內置的特性。那么為什么會出現Lock呢? 在上面一篇文章中,我們了解到如果一個代碼塊被synchronized修飾了,當一個線程獲取了對應的鎖,并執行該代碼塊時,其他線程便只能一直等待,等待獲
閱讀全文
摘要:
一.synchronized同步方法或者同步塊 在了解synchronized關鍵字的使用方法之前,我們先來看一個概念:互斥鎖,顧名思義:能到達到互斥訪問目的的鎖。 舉個簡單的例子:如果對臨界資源加上互斥鎖,當一個線程在訪問該臨界資源時,其他線程便只能等待。 在Java中,每一個對象都擁有一個鎖標記
閱讀全文
摘要:
一.線程的狀態 線程從創建到最終的消亡,要經歷若干個狀態。一般來說,線程包括以下這幾個狀態:創建(new)、就緒(runnable)、運行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)。 當需要新起一個線程來執行某個子任務時,就創建了一個線程。
閱讀全文
摘要:
在多線程的應用中,兩個或者兩個以上的線程需要共享對同一個數據的存取。如果兩個線程存取相同的對象,并且每一個線程都調用了修改該對象的方法,這種情況通常成為競爭條件。 競爭條件最容易理解的例子就是:比如火車賣票,火車票是一定的,但賣火車票的窗口到處都有,每個窗口就相當于一個線程,這么多的線程共用所有的火
閱讀全文
摘要:
一 、線程和進程 1. 什么是線程和進程的區別: 線程是指程序在執行過程中,能夠執行程序代碼的一個執行單元。在java語言中,線程有四種狀態:運行 、就緒、掛起和結束。 進程是指一段正在執行的程序。而線程有時也被成為輕量級的進程,他是程序執行的最小單元,一個進程可以擁有多個線程,各個線程之間共享程序
閱讀全文