关于java多线程的...

[复制链接]
查看11 | 回复4 | 2013-3-7 10:28:53 | 显示全部楼层 |阅读模式
虽然interrupt是中断一个线程, 但是它不是你上面理解的那样中断线程简单情况下, 比如你上面写的线程, run方法中通过while循环来维持线程的不断运行, 如果你想在主程序中中断这个线程, 你会怎么办呢? 你的做法是在主线程中调用了一个函数, incident(), 这个函数中调用了线程的interrupt()方法, 思路是正确的, 但是却没有达到你的期望, 原因就是, interrupt方法不是这样用的, 后面会给你说怎么用. 对于一般情形, 比如你上面的这种情况, 正确的方式, 是给线程设置一个成员变量, flag, 而线程的run方法中while(flag){}, 然后主线程中, 通过置这个线程的flag为false来中断...
回复

使用道具 举报

千问 | 2013-3-7 10:28:53 | 显示全部楼层
1. 首先你要看清楚文档,interrupt是将对应线程的打断状态设置为true,并不会将线程kill掉。2. 因为sleep是一个接收interrupt状态的方法,假如sleep过程中线程被标记为interrupt的话其就会抛出InterruptedException,这个是有所有阻塞方法内部决定的,所有的阻塞方法均可被interrupt打断并且抛出I...
回复

使用道具 举报

千问 | 2013-3-7 10:28:53 | 显示全部楼层
在JDK1.0中,可以用stop方法来终止,但是现在这种方法已经被禁用了,改用interrupt方法。Thread.interrupt()方法不会中断一个正在运行的线程。它的作用是,在线程受到阻塞时抛出一个中断信号,这样线程就得以退出阻塞的状态。更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻...
回复

使用道具 举报

千问 | 2013-3-7 10:28:53 | 显示全部楼层
1.Thread.currentThread().interrupt()方法只是发出一个中断信号,并不会真正停止程序的运行。2.如果线程被Object.wait,Thread.join和Thread.sleep三种方法之一阻塞,那么,它将接收到一个中断异常(InterruptedException)...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行