原创 Java併發——線程局部變量

1. 爲什麼要使用線程局部變量你? 如果創建的對象實現了Runnable接口的類的實例,用它作爲傳入參數,並創建多個線程對象並啓動這些線程,那麼所有的線程將共享相同的屬性。如果在一個線程中改變一個屬性,所有線程都會被這個改變影響。這樣,不

原创 Java併發——生產者-消費者

//生產者-消費者模型 //多線程的典型例子 public class ProducerConsumer { public static void main(String[] args) { Shared s = new S

原创 Java併發——線程組

1.定義 一個線程組代表了一組線程; 一個線程組也能包含其他線程組,這些線程組形成了一棵樹,其中除了初始線程,每個線程組都有一個父線程組。 2. 線程的使用:對線程進行批量處理。下面這個博文寫的很詳細。 https://www.cnblo

原创 synchronized和volatile —— 原子性和可見性

原博出處 https://blog.csdn.net/guyuealian/article/details/52525724

原创 同步臨界區的訪問 —— synchronized關鍵字

1.臨界區: 臨界區就是必須以串行方式(一次一條線程)方法的一段代碼塊。 同步是通過監聽器來實現的。每一個Java對象都和一個監聽器相關聯,線程通過獲取和釋放監聽器的鎖來上鎖和解鎖。 2. 使用synchronized關鍵字來串行線程對方

原创 Java併發編程——wait()、notify()、notifyAll()

1. wait()、notify()、notifyAll()是java.lang.Object類提供的類函數,用於支持線程間交互 (1)void wait():導致當前線程一直處於等待,直到另外的線程調用這個對象的notify()或者no

原创 volatile關鍵字——可見性

(1)volatile是輕量級的synchronized,它在多處理器開發中保證了共享變量的“可見性”,但無法保證“原子性”。 (2)volatile不會引起線程上下文的切換,在使用恰當的情況下,比synchronized的使用和執行成本

原创 Thread和Runnable

1.什麼是線程? 線程就是一條在程序代碼中獨立執行的路徑。 2.什麼是runnable? 一個runnable就是一段封裝在對象中的代碼序列,它的類實現了Runnable接口。 3.Thread類和Runnable接口完成了什麼? 類Th

原创 Java線程中的問題——競態條件、數據競爭

1.競態條件 說得通俗一點,就是線程A 需要判斷一個變量的狀態,然後根據這個變量的狀態來執行某個操作。在執行這個操作之前,這個變量的狀態可能會被其他線程修改。 典型情況: (1)check-then-act if(a == 10.0)

原创 Java併發編程基礎

1.實現多線程的兩種方式: (1)繼承Thread類; (2)實現Runnable接口 //進程:每個進程都有獨立的代碼和數據空間(進程上下文),進程間的切換開銷比較大,一個進程包含1-n個線程 //線程:同一類線程共享代碼和數據空間,

原创 Java之String理解

  一、String在內存中的存儲情況 1.Java虛擬機JVM的內存塊及其變量、對象內存空間是怎麼存儲分配的? 1、棧:存放基本數據類型及對象變量的引用,對象本身不存放於棧中而是存放於堆中              1)、基礎類型 b

原创 JDK源代碼之String類

1. String類的定義    public final class String implements java.io.Serializable, Comparable<String>, CharSequence 可以看

原创 C++實現Lambda表達式

C++實現Lambda表達式 4年過去了,還是程序媛小白。導師讓看看關於Lambda算子的東西,才第一次知道函數式編程,lambda算子,艱難的進階之路。記錄一下學習歷程。總結一下看過的資料。 原作:https://www.cnblog

原创 《重構網絡:SDN架構與實現》第一章總結

        最近加入SDN項目的研究,對SDN一知半解,僅知道是控制平面與數據平面分離,支持網絡可編程。在看了《重構網絡:SDN架構與實現》一章之後,對SDN的原理及發展有了更深刻的瞭解。特此進行簡要總結,以便後續查閱。希望在研究SD