java初入多線(xiàn)程19

基于Socket的服務(wù)端多線(xiàn)程模式

public class HeavySocketClient {

    private static ExecutorService  tp =Executors.newCachedThreadPool();
    
    private static final int sleep_time =1000 * 1000 * 1000 ;
    
    public static class EchoClient implements Runnable{
        @Override
        public void run() {
            Socket client =null ;
            PrintWriter writer = null ;
            BufferedReader reader = null ;
            
            try {
                client =new Socket ();
                client.connect(new InetSocketAddress("localhost", 8000));
                writer = new PrintWriter(client.getOutputStream() , true );
                writer.print("H");
                LockSupport.parkNanos(sleep_time);
                writer.println("e");
                LockSupport.parkNanos(sleep_time);
                writer.println("e");
                
                LockSupport.parkNanos(sleep_time);
                writer.println("e");
                
                LockSupport.parkNanos(sleep_time);
                writer.println("e");
                
                LockSupport.parkNanos(sleep_time);
                writer.println("e");
                
                LockSupport.parkNanos(sleep_time);
                writer.println("e");
                writer.flush();
                
                reader =new BufferedReader(new InputStreamReader(client.getInputStream()));
                System.out.println("from server : " +reader.readLine());
                
            } catch (Exception e) {
                e.printStackTrace();
            }       
        }
    }   
}
public class MultiThreadEchoServer {

    private static ExecutorService tp =Executors.newCachedThreadPool();
    
    static class HandleMsg implements Runnable{

        Socket clienSocket ;
        
        
        public HandleMsg(Socket clienSocket) {
            super();
            this.clienSocket = clienSocket;
        }


        @Override
        public void run() {
            BufferedReader is = null ;
            PrintWriter os = null ;
            try {
                is = new BufferedReader( new InputStreamReader(clienSocket.getInputStream()));
                os =new PrintWriter(clienSocket.getOutputStream(),true);
                
                String inputLine = null;
                long b =System.currentTimeMillis() ;
                
                while ((inputLine = is.readLine()) != null){
                    os.println(inputLine);
                }
                long e =System.currentTimeMillis() ;
                System.out.println("spend:"+ (e - b) + "ms");
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    if(is != null){
                        is.close();
                    }
                    if(os != null){
                        os.close();
                    }
                    clienSocket.close();
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
        }
    }
    
    public static void main(String[] args) {
        ServerSocket echoServer = null ;
        Socket clientSocket = null ;
        try {
            echoServer =new ServerSocket(8000);
        } catch (Exception e) {
            System.out.println(e);
        }
        
        while(true){
            try {
                clientSocket = echoServer.accept() ;
                System.out.println(clientSocket.getRemoteSocketAddress() + " connect !");
                tp.execute(new HandleMsg(clientSocket));
                
            } catch (Exception e) {
                System.out.println(e);
            }
        }
    }
    
}
  • 客戶(hù)端與服務(wù)端的代碼實(shí)現(xiàn) 寺晌,在客戶(hù)端世吨,我們使用線(xiàn)程池實(shí)現(xiàn)10次請(qǐng)求,因?yàn)闀?huì)在輸出有個(gè)字符之后呻征。進(jìn)行1秒的等待耘婚。所以會(huì)延遲很長(zhǎng)時(shí)間。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陆赋,一起剝皮案震驚了整個(gè)濱河市沐祷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌攒岛,老刑警劉巖赖临,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異灾锯,居然都是意外死亡兢榨,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)顺饮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)色乾,“玉大人,你說(shuō)我怎么就攤上這事∧垦” “怎么了呐伞?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)夯巷。 經(jīng)常有香客問(wèn)我曹鸠,道長(zhǎng)窖逗,這世上最難降的妖魔是什么金砍? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任局蚀,我火速辦了婚禮,結(jié)果婚禮上恕稠,老公的妹妹穿的比我還像新娘琅绅。我一直安慰自己,他們只是感情好鹅巍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布千扶。 她就那樣靜靜地躺著,像睡著了一般骆捧。 火紅的嫁衣襯著肌膚如雪澎羞。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天敛苇,我揣著相機(jī)與錄音妆绞,去河邊找鬼。 笑死枫攀,一個(gè)胖子當(dāng)著我的面吹牛括饶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播来涨,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼图焰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了扫夜?” 一聲冷哼從身側(cè)響起楞泼,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎笤闯,沒(méi)想到半個(gè)月后堕阔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颗味,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年超陆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浦马。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡时呀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晶默,到底是詐尸還是另有隱情谨娜,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布磺陡,位于F島的核電站趴梢,受9級(jí)特大地震影響漠畜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坞靶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一憔狞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧彰阴,春花似錦瘾敢、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至妻味,卻和暖如春正压,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背责球。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工焦履, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雏逾。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓嘉裤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親栖博。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屑宠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)仇让,斷路器典奉,智...
    卡卡羅2017閱讀 134,667評(píng)論 18 139
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司丧叽,掛了不少卫玖,但最終還是拿到小米、百度踊淳、阿里假瞬、京東、新浪迂尝、CVTE脱茉、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,254評(píng)論 11 349
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法垄开,內(nèi)部類(lèi)的語(yǔ)法琴许,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法溉躲,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,643評(píng)論 18 399
  • 想起自動(dòng)放棄跳舞表演的女兒,我笑了笑問(wèn)女孩:“你不喜歡表演是不是串慰?”小孩終于點(diǎn)了點(diǎn)頭。家長(zhǎng)后來(lái)跟我說(shuō):她女兒學(xué)鋼琴...
    嫣姐妹閱讀 422評(píng)論 0 1
  • 從現(xiàn)在開(kāi)始,確定自己未來(lái)一萬(wàn)小時(shí)的努力方向并堅(jiān)持下去神汹,那么在下一個(gè)十年之后庆捺,你也將成為“世界級(jí)大師”! 這段話(huà)是《...
    晶晶亮的沙子閱讀 472評(píng)論 1 4