java 板


LINE

因为只有看到部份的程式码, 我就先谈我看到的地方。 1. accept 会block。 我在你给的sample没看到accept,不太确定你指的是什麽。 2. read input stream byte[] buf = new byte[5000]; int length = is.read(buf); is.read(byte[]) 会在is available > 0 的时候马上执行并回传读入的个数, 意思是当server没有打资料的时候会block在这行,一有资料就会执行。 假设server打4000个byte, 有时因为网路问题这4000的byte不一定是一次就传到。 有可能分批2000、300、1000、700到。 假如这4000个byte代表你一个完整的xml, 那在这个情况下就会被分成4个部份parse 4次。 就会有资料不全而错误的情况。 3. 停止thread 这是一个最简单的范例。 public class Connect{ private ConnectThread thread; public Connect(Socket skt){ thread = new ConnectThread(skt); } public void start(){ thread.start(); } public void shutdown(){ thread.shutdownNow(); } } class ConnectThread{ private BufferedInputStream bi; private boolean flag = false; public ConnectThread(Socket skt){ bi = new BufferedInputStream(skt.getInuputStream); } public void run(){ flag = true; int code; while(flag){ code = bi.read() //do something } } public void shutdownNow(){ flag = false; bi.close(); } } 假如你的是写swing, JFrame注册一个windows listener, 在close时呼叫Connect.shutdown() 如果是javafx 注册一个EventHandler在Stage.setOnCloseRequest() 同样呼叫Connect.shutdown() 或是在任何你自订的事件下呼叫都可以。 (比如按下「结束连线」的按钮) 这个例子中thread同样会block在bi.read() 但当input stream关掉时这里会抛出一个IOException, 再依照你所需的逻辑配合适当的try catch就可以让thread正常结束。 例子中没有包含处理Exception, 但基本操作大概就是这样, 若有什麽问题可以再提出讨论。 -- ▃▃▃▃▃▃▃▃▃▃▃▃▃ ██▃▃▃▃▃▃▃ ▇▇▇ ▇▇▇ ▇ ▇▇█ ▇▇▇ ▇█▇ ▇▇▇ ▇ ▇ █ █ ▉▉█ █ █ █ █ █ █ █ █ ██◤ ███ ▉▉█ █ ███ ███ █ ███ █ ◆│ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄██│ By luh4 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.70.196.68
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1436076064.A.1C3.html
1F:推 tas72732002: 恩恩 ~ 很详细, 我说的accept()是read() 我打错了 07/05 21:33
2F:推 tas72732002: 且抛出异常, thread 应该就已经结束了 07/06 16:49
3F:推 kurakidream: 强者我同学 ,人称 multi thread 魔术师 07/07 00:58







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP