A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张帅 黑马帝   /  2011-12-28 23:10  /  7815 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为啥 多线程里 要写 while(true)  ?

该贴已经同步到 张帅的微博

15 个回复

倒序浏览
jdk1.3有以前的版本中(不知道jdk1.4怎么样),终止线程API--stop不起作用,destroy()方法SUN不赞成用,因为它也不能保证线程的退出。而退出线程的run却可以保证退出线程,为了让一个线程处于某种处理数据状态(如:不继的接收网络信息)--即使线程处于活动状态必需在run方法中加while(true)来实现,可以在while(true)中设置跳出循环的条件语句,从外部控制线程的结束。
thread本身的run()方法没有包含某种形式的无限循环。
线程的run()方法中的执行部分只需要执行一次,不需要套一层while(true)循环

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
张帅 黑马帝 2011-12-29 00:43:02
藤椅
杨丹丹 发表于 2011-12-28 23:35
jdk1.3有以前的版本中(不知道jdk1.4怎么样),终止线程API--stop不起作用,destroy()方法SUN不赞成用,因为它 ...

姐,没听懂,还是再详细讲解下吧
回复 使用道具 举报
多线程函数和有While(true)没有关系!

多线程函数很多都没有While(true),只是你看到的多线程函数里面有While(true),就认为多线程函数需要While(true),是不对的
程序代码是根据需要而写的,比如说你的程序需要一直监控某个东西,一般都是每隔一段时间去看看什么情况,除了可以使用定时器去做,还可以就是新建一个线程,在这个线程里面就是一个While(true)的死循环。

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
曾运 黑马帝 2011-12-29 07:16:51
报纸
run方法里写while(true){} 是为了让线程多执行一些数据,在用多线程操作同一资源时方便我们看出问题所在。
就好像你去研究某一个问题的结论,你抽取的研究样本数据越大,那么你的结论越准确。

具体写什么看需求,不是非得写while(true){}。
回复 使用道具 举报
LZ是指视频教程中“使用if()语句出问题,而改用while()就正常”这个问题吗?
回复 使用道具 举报
张帅 黑马帝 2011-12-29 10:59:44
7#
monghuan 发表于 2011-12-29 10:29
LZ是指视频教程中“使用if()语句出问题,而改用while()就正常”这个问题吗? ...

不是,就只不明白为啥要写 while(true)
回复 使用道具 举报
刘基军 黑马帝 2011-12-29 11:08:53
8#
张帅 发表于 2011-12-29 10:59
不是,就只不明白为啥要写 while(true)

那是指run()方法下面的while(true)吗?如果是的话,保证线程可以一直执行下去
回复 使用道具 举报
一般一个程序里是不提倡写while(true){}这种循环的,容易死锁,至于老毕的视频用它,我想是为了让我们更加的看清楚一个线程具是如何实现的,便于我们深刻理解多线程,也就是为了分析用的。
回复 使用道具 举报
杨旭 黑马帝 2011-12-29 13:48:01
10#
while(true) 是无限循环最简单表现方式之一
for(;;)也可以用作无限循环
回复 使用道具 举报
黄战胜 黑马帝 2011-12-29 17:33:30
11#
谁说多线程里非要写while(true),这个根据具体需要写,有必要就写,么必要就不写。
回复 使用道具 举报
马新乐 黑马帝 2011-12-30 21:14:14
12#
while(true)意思就是让服务器端一直处于监听状态(因为一直没有跳出循环),所以可以不断的监听到客户端发来的信息
回复 使用道具 举报
没有什么语法规定说线程里面一定要用while(true)这个死循环,但是,在当我们在学习线程时为了能更清楚的了解线程的特性,就需要让线程处于一直运行的状态,这样便于我们从运行结果中分析线程特性。
回复 使用道具 举报
不是必须用while(true)可能老是为了给我们举例才这样写的,而且大多例子是出现在服务端,这样可以多创建新的线程让我们学习,以后真的在服务器中写的话也可以用别的循环语句,比如你服务器要在每天的哪时哪刻来重启,就可以在条件语句上来设置条件,不用非要用true
回复 使用道具 举报
while(true)就是要不断的干一件事情,如果需要就写,不需要就不用,没有什么 硬性规定
回复 使用道具 举报
wsssx 2012-1-2 16:17:21
16#
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马