原创 併發基礎(一) Java中的線程

一、線程的簡介 線程,有時被稱爲輕量級進程(Lightweight Process,LWP),是程序執行流的最小單元。一個標準的線程由線程ID,當前指令指針(PC),寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統獨

原创 併發基礎(四) java中線程的狀態

一、線程的五種狀態   線程的生命週期可以大致分爲5種,但這種說法是比較舊的一種說法,有點過時了,或者更確切的來說,這是操作系統的說法,而不是java的說法。但對下面所說的六種狀態的理解有所幫助,所以也寫出來,作爲參考。 1.

原创 併發基礎(五) 創建線程的四種方式

線程的創建一共有四種方式: 繼承於Thread類,重寫run()方法; 實現Runable接口,實現裏面的run()方法; 使用 FutureTask 實現有返回結果的線程 使用ExecutorService、Executor

原创 併發基礎(三) java線程優先級

  在不同的JVM中(JVM也算是一個操作系統),有着不同的CPU調度算法,對於大部分的JVM來說,優先級也是調度算法中的一個參數。所以,線程優先級在一定程度上,對線程的調度執行順序有所影響,但不能用於保證線程的執行順序,因爲優先

原创 併發基礎(二)Thread 類API總結

Thread 類是java中的線程類,提供給用戶用於創建、操作線程、獲取線程的信息的類。是java線程一切的基礎,掌握這個類是非常必須的,先來看一下它的API; 1、字段摘要 static int MAX_PRIORITY :線程

原创 markdown的文章樣式:字體、顏色、大小、背景色、圖片、縮進

  自從我學習編程開始,我是一直在用CSDN,但是一直在看大神的博客,這幾天纔開始寫博客,CSDN提供兩種編輯方式來寫文章。第一種便是xhEditor ;第二種便是markdown。第一種寫文章的方式low爆了,作爲程序員的我肯定

原创 併發工具類(三)控制併發線程的數量 Semphore

前言   JDK中爲了處理線程之間的同步問題,除了提供鎖機制之外,還提供了幾個非常有用的併發工具類:CountDownLatch、CyclicBarrier、Semphore、Exchanger、Phaser;   CountDown

原创 併發工具類(五) Phaser類

前言   JDK中爲了處理線程之間的同步問題,除了提供鎖機制之外,還提供了幾個非常有用的併發工具類:CountDownLatch、CyclicBarrier、Semphore、Exchanger、Phaser;   CountDown

原创 Executor框架(一)Executor框架簡介

Executor框架簡介 Executor框架的兩級調度模型   在HotSpot VM的線程模型中,Java線程被一對一映射爲本地操作系統線程。Java線程啓動時會創建一個本地操作系統線程;當Java線程終止時,這個操作系統線程也會被回

原创 併發基礎(八) java線程的中斷機制

一、線程中斷機制的原理   java中斷機制是一種協作機制,也就是說通過中斷並不能直接終止另一個線程,而需要被中斷的線程自己處理中斷。 中斷 可以認爲是線程之間的一種通信的消息類型,當線程接到了一箇中斷消息時,怎麼處理是線程的控制的,甚至

原创 實現多線程安全的3種方式

1、先來了解一下:爲什麼多線程併發是不安全的?   在操作系統中,線程是不擁有資源的,進程是擁有資源的。而線程是由進程創建的,一個進程可以創建多個線程,這些線程共享着進程中的資源。所以,當線程一起併發運行時,同時對一個數據進行修改,就可能

原创 java線程阻塞中斷和LockSupport的常見問題

這裏僅包含要討論的幾個問題的答案,具體討論過程查看原文:java線程阻塞中斷和LockSupport的常見問題 問題1: Thread.interrupt()方法和InterruptedException異常的關係?是由interrup

原创 顯式鎖(三) -- 讀寫鎖ReadWriteLock

前言:   上一篇文章,已經很詳細地介紹了 顯式鎖Lock 以及 其常用的實現方式- - ReetrantLock(重入鎖),本文將介紹另一種顯式鎖 - - 讀寫鎖ReadWriteLock。    前面介紹的隱式鎖Synchroniz

原创 內置鎖(二)--synchronized下的等待/通知機制

一、等待/通知機制的簡介 線程之間的協作:   爲了完成某個任務,線程之間需要進行協作,採取的方式:中斷、互斥,以及互斥上面的線程的掛起、喚醒;如:生成者–消費者模式、或者某個動作完成,可以喚醒下一個線程、管道流已準備等等; 等待/通

原创 內置鎖(三)---- synchronized的幾個要注意的對象監視器

前言    經過前面的兩篇文章的介紹,可以清楚知道,synchronized可以用於修飾一個方法 或者 代碼塊,線程要訪問這些臨界區代碼,則要先獲取對應的 對象監視器 ,從而使多個線程互斥訪問臨界區。    然而,區別是不是同一個對象監