多線程及網(wǎng)絡編程

多線程
1.多線程的概述: 進程有多條執(zhí)行路徑,合稱為多線程.
進程:可執(zhí)行文件(程序).eg:exe文件
線程:進程的執(zhí)行路徑(執(zhí)行單元)
2.多線程并行和并發(fā)的區(qū)別
并行:
多個線程同時執(zhí)行.(前提是:需要多核CPU)
并發(fā):
多個線程同時請求執(zhí)行,但是同一瞬間,cpu只能執(zhí)行一個線程,于是安排這些線程交替執(zhí)行,由于時間間隔非常短,所以我們看起來是同一時間執(zhí)行的,其實并不是
3.多線程的實現(xiàn)方式
3.1繼承Thread類
步驟:

1.定義一個類(MyThread),繼承Thread類
2.重寫run()方法
3.把要執(zhí)行的代碼放入run方法中
4.創(chuàng)建線程對象
    MyThread  mt = new MyThread();
5.開啟線程
    mt.start();
  注意:
        1) 開啟線程, 調(diào)用的是Thread#start()方法.
         如果你調(diào)用的是run()方法, 那么只是普通的方法調(diào)用.
        2) 同一個線程對象不能重復開啟, 否則會報: IllegalThreadStateException(非法的線程狀態(tài)異常)

3.2實現(xiàn)Runnable接口

1.定義一個實現(xiàn)類(MyRunnable),實現(xiàn)Runnable接口
2.重寫run()方法
3.把要執(zhí)行的代碼放入run()方法中
4.創(chuàng)建Runnable接口的子類對象,將其作為參數(shù)傳入Thread類的構造方法中,創(chuàng)建線程對象
    MyRunnable mr = new MyRunnable();
    Thread tr = new Thread(mr);
5.開啟線程
    tr.start();
  注意:
        1) 開啟線程, 調(diào)用的是Thread#start()方法.
        如果你調(diào)用的是run()方法, 那么只是普通的方法調(diào)用.
        2) 同一個線程對象不能重復開啟, 否則會報: IllegalThreadStateException(非法的線程狀態(tài)異常)

模擬買票案例:

public class MyRunnable implements Runnable{

    //定義變量,接收票數(shù)
    private static int tickets = 100;
    //重寫run()方法
    @Override
    public void run() {
        while (true){
            synchronized (this){   //加鎖,解決負數(shù)票以及重復票,鎖對象必須是同一把鎖,一般是本類的.class
            //本方法使用實現(xiàn)Runnable接口,可以使用this,因為只創(chuàng)建了一個本類對象
            //如果使用繼承Thread類方法實現(xiàn),不能使用this,需使用.class
                if(tickets<1){
                    break;
                }
                System.out.println(Thread.currentThread().getName()+"正在出售第"+ tickets-- + "張票!");
            }
        }
    }
}
//測試類
public class TestRunnable {
    public static void main(String[] args) {
        MyRunnable mr = new MyRunnable();

        Thread th1 = new Thread(mr,"一號窗口");
        Thread th2 = new Thread(mr,"二號窗口");
        Thread th3 = new Thread(mr,"三號窗口");
        Thread th4 = new Thread(mr,"四號窗口");

        th1.start();
        th2.start();
        th3.start();
        th4.start();
    }
}

4.Thread類中的成員總結

    構造方法:
        public Thread();
        public Thread(String name);
        public Thread(Runnable target);
        public Thread(Runnable target, String name);
    
    成員方法:
        public void run();                      //里邊記錄的是多線程要執(zhí)行的代碼, 該方法會自動被start()方法調(diào)用.
        public void start();                    //開啟線程, 該方法會自動調(diào)用run().
        public String getName();                //獲取當前正在執(zhí)行的線程對象的名字.
        public void setName(String name);       //設置線程名
        public static Thread currentThread();   //獲取當前正在執(zhí)行的線程對象.
        public static void sleep(long millis);  //讓線程休眠指定的時間, 單位是: 毫秒.

網(wǎng)絡編程

1.概述:用來實現(xiàn)網(wǎng)絡互聯(lián)的,不同計算機上,運行的程序間,可以進行數(shù)據(jù)交互.
大白話講就是:用來在不同的設備之間進行數(shù)據(jù)傳輸?shù)?
網(wǎng)絡編程也叫套接字編程,也叫Socket編程
網(wǎng)絡模型(TCP/IP模型,7層):
物理層
數(shù)據(jù)鏈路層
傳輸層
網(wǎng)絡層
表示層
會話層
應用層
網(wǎng)絡編程的三大要素:
1.IP:設備在網(wǎng)絡中的唯一標識
2.端口:程序在設備上的唯一標識
3.協(xié)議:設備之間的通信規(guī)則

        UDP:    //群發(fā)消息.
            1. 面向無連接.
            2. 采用數(shù)據(jù)報包(DatagramPacket)發(fā)送數(shù)據(jù), 每個包的大小不能超過: 64KB.
            3. 不安全(不可靠)協(xié)議.
            4. 效率相對較高.
            5. 不區(qū)分客戶端和服務器端, 叫發(fā)送端和接收端.
        
        TCP:    //單聊
            1. 面向有連接(三次握手).
            2. 采用IO流發(fā)送數(shù)據(jù), 理論上來講,無數(shù)據(jù)大小限制.
            3. 安全(可靠)協(xié)議.
            4. 效率相對較低.
            5. 區(qū)分客戶端和服務器端.

網(wǎng)絡通信的原理:
網(wǎng)絡通信也叫Socket通信, 通信兩端都獨有自己的Socket對象, 數(shù)據(jù)在兩個Socket之間進行交互.
//例如: 你給你的朋友打電話, 看起來好像是你和你朋友在聊天, 其實是兩個手機在輸出數(shù)據(jù).



面試題:

1. 多線程并行和多線程并發(fā)的區(qū)別? 

2. Java程序是多線程的嗎?
    是, 至少開啟了 main線程(主線程), GC(垃圾回收線程).


3. 線程的默認命名規(guī)則是什么?
    Thread-編號, 編號從0開始.

4. 多線程執(zhí)行的特點是什么?
    隨機性, 延遲性. 原因是因為CPU在做著高效的切換.

5. 多線程的兩種實現(xiàn)方式的區(qū)別是什么?
    繼承Thread類:
        好處: 代碼相對比較簡單.   //因為是繼承Thread類, 所以可以直接使用Thread類中的方法.
        弊端: 擴展性相對較差.        //因為已經(jīng)繼承Thread類了, 就不能繼承別的類.
        
    實現(xiàn)Runnable接口:
        好處: 擴展性相對較強.
        弊端: 代碼相對比較繁瑣.
            //繁瑣, 冗余, 復雜, 困難.
            
6. 多線程的生命周期是什么?
    官方解釋:
        新建, 就緒, 運行(可能會發(fā)生阻塞), 死亡.
        
    加強版:
        新建, 就緒, 運行(可能會發(fā)生阻塞和等待), 死亡.


7. 網(wǎng)絡編程的三大要素是什么?

8. 端口號的范圍是多少?
    0--65535,其中0~1024之間的端口號已經(jīng)被系統(tǒng)占用了, 或者用作保留端口.

9. UDP協(xié)議和TCP協(xié)議的區(qū)別是什么?
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖主之,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異硼身,居然都是意外死亡翘贮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門禀忆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來臊旭,“玉大人,你說我怎么就攤上這事箩退±胙” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵戴涝,是天一觀的道長滋戳。 經(jīng)常有香客問我,道長啥刻,這世上最難降的妖魔是什么奸鸯? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮可帽,結果婚禮上娄涩,老公的妹妹穿的比我還像新娘。我一直安慰自己映跟,他們只是感情好蓄拣,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布扬虚。 她就那樣靜靜地躺著,像睡著了一般球恤。 火紅的嫁衣襯著肌膚如雪辜昵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天咽斧,我揣著相機與錄音路鹰,去河邊找鬼。 笑死收厨,一個胖子當著我的面吹牛晋柱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诵叁,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼雁竞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拧额?” 一聲冷哼從身側響起碑诉,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侥锦,沒想到半個月后进栽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡恭垦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年快毛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片番挺。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡唠帝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玄柏,到底是詐尸還是另有隱情襟衰,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布粪摘,位于F島的核電站瀑晒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏徘意。R本人自食惡果不足惜苔悦,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望映砖。 院中可真熱鬧间坐,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜈七,卻和暖如春秒拔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背飒硅。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工砂缩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人三娩。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓庵芭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親雀监。 傳聞我的和親對象是個殘疾皇子双吆,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 彎弓倚玉郎,竹弦笑滿長会前。 玲瓏走趙府好乐,召喚紅衣裳。 -------靜靜手扎
    靜靜086閱讀 121評論 0 0
  • 回娘家 (天蝎網(wǎng)絡提供) 孫儀 詞 湯尼 曲 朱明瑛 演唱 風吹著楊柳嘛 唰啦啦啦啦啦 小河里水流 得兒 嘩啦啦啦...
    貓戀一夏閱讀 498評論 1 2
  • 今天晚上瓦宜,餐前水果是橙子蔚万,每個孩子三瓣。所有人都吃完了临庇,看到有個小姑娘還沒吃反璃,有點奇怪,問她為什么還不吃苔巨,她說要帶...
    我是一朵蘑菇a閱讀 113評論 0 0