求救: 关于java的一些问题 多线程处理中, stop()方法到底有什么隐患? 为什么我调用它强行终止线程后, 线程仍处于活动状态, 有什么其他办法可以强行终止线程的呢? interrupt()方法又是有什么用的呢? 和stop()有什么区别?另外, 如何把文件中所有的内容直接读到字符串中去? 我开始一行一行地读, 然后再用append()拼接起来, 但这样实在太慢了~等待高手打救~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 中止线程的建议方法是自己设置一个锁, 比如线程可能像这样:while(stop) {//一些操作}stop是一个boolean型的变量, 如果想中止线程, 就把stop设置成false, 线程就结束了.stop()方法是不建议使用的, 因为可能导致死锁, 具体看Thinking in java.interrupt方法用来打断受阻的线程, 比如一个线程可能由于某种原因受阻了, 无法继续执行下去了, 可以用interrupt方法来唤醒, 可能会产生一个InterruptedException. 第二个问题读取文件: FileReader in = new FileReader("C:\\debug.log"); char []buf = new char[10240]; //最多读取10k, 大小自行设定 int len = in.read(buf); String str = new String(buf, 0, len); System.out.println(str); 用interrupt方法来唤醒Thread.sleep()的线程 第二个问题读取文件:用bufferedread() 多谢各位的帮助, 按照hemiao_1993(冷血动物), 问题已经解决了~另外, 如果我想限定一个线程运行的时间, 当超时时将强行终止该线程, 有什么好的办法解决呢? 另外, 如果我想限定一个线程运行的时间, 当超时时将强行终止该线程, 有什么好的办法解决呢?----------------一样的, 超时就把线程锁调置成false就行了. 另外, 如果我想限定一个线程运行的时间, 当超时时将强行终止该线程, 有什么好的办法解决呢?----------------一样的, 超时就把线程锁调置成false就行了.-----------------------------可是线程是顺序运行的, 不需要while循环, 例如在执行语句new URL(link).openStream())); 时, 因为打开url的流可能很慢, 如果网络没连上的话, 可以要等上十秒它才会产生IOException, 如果我规定它五秒打不开, 就终止它, 怎么办呢? 其实要退出线程,你可以自定义一个标量,while(go){//做你自己的事情}如果你想退出线程的话,只要把go改为false就可以了 lbfhappy(千里冰封): 对于下列代码, while(go){ 1; 2; 3; 4; }, 如果语句2是new URL(newurl).openStream();, 假如该语句执行要很久, 我想在该语句的执行过程中, 就终止该线程有什么办法呢? 而while循环是必须要等到所有语句都执行完之后再判断的, 由于语句甚多, 又不可能在每条语句后面都加上if(!go) break;语句来判断是否终止线程.不知道还有什么好的方法~~ 求助!个人作业,不知道怎么弄,求各位强人帮忙! 关于得到一个范围内的随机数 哪位大哥能帮我做个题目啊。。急!!! java3d和applet的问题? 请教,eclipse的插件实现原理 可恶的微软! 高人何在?快来救命 请高手赐教 准备开始学java,求推荐 看看这段程序 怎么用函数改变全局变量的值? 《抓住职场中的那条大鱼——职业选择与求职指南》到哪可以下载???
while(stop) {
//一些操作
}
stop是一个boolean型的变量, 如果想中止线程, 就把stop设置成false, 线程就结束了.
stop()方法是不建议使用的, 因为可能导致死锁, 具体看Thinking in java.interrupt方法用来打断受阻的线程, 比如一个线程可能由于某种原因受阻了, 无法继续执行下去了, 可以用interrupt方法来唤醒, 可能会产生一个InterruptedException.
FileReader in = new FileReader("C:\\debug.log");
char []buf = new char[10240]; //最多读取10k, 大小自行设定
int len = in.read(buf);
String str = new String(buf, 0, len);
System.out.println(str);
用bufferedread()
----------------
一样的, 超时就把线程锁调置成false就行了.
----------------
一样的, 超时就把线程锁调置成false就行了.-----------------------------可是线程是顺序运行的, 不需要while循环, 例如在执行语句new URL(link).openStream()));
时, 因为打开url的流可能很慢, 如果网络没连上的话, 可以要等上十秒它才会产生IOException, 如果我规定它五秒打不开, 就终止它, 怎么办呢?
while(go){
//做你自己的事情
}
如果你想退出线程的话,只要把go改为false就可以了