|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。
简介
在Java的多线程编程中,java.lang.Thread范例包括了一些列的办法start(),stop(),stop(Throwable)andsuspend(),destroy()andresume()。经由过程这些办法,我们能够对线程举行便利的操纵,可是这些办法中,只要start()办法失掉了保存。
在Sun公司的一篇文章《WhyareThread.stop,Thread.suspendandThread.resumeDeprecated?》中具体解说了舍弃这些办法的缘故原由。那末,我们事实应当怎样中断线程呢?
倡议利用的办法
在《WhyareThread.stop,Thread.suspendandThread.resumeDeprecated?》中,建议利用以下的办法来中断线程:
private volatile Thread blinker;
public void stop() {
blinker = null;
}
public void run() {
Thread thisThread = Thread.currentThread();
while (blinker == thisThread) {
try {
thisThread.sleep(interval);
} catch (InterruptedException e){
}
repaint();
}
}
关于利用volatile关头字的缘故原由,请检察http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#36930。
当线程处于非运转(Run)形态
当线程处于上面的情况时,属于非运转形态:
* 当sleep办法被挪用。
*当wait办法被挪用。
*当被I/O堵塞,多是文件大概收集等等。
当线程处于上述的形态时,利用后面先容的办法就不成用了。这个时分,我们可使用interrupt()来冲破堵塞的情形,如:
public void stop() {
Thread tmpBlinker = blinker;
blinker = null;
if (tmpBlinker != null) {
tmpBlinker.interrupt();
}
}
<p>
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。 |
|