今天看到一篇文章,是说java的 Thread.sleep()方法的, 曾经没注意,sleep(0)不写不就完了,脱裤子放屁??
不是这回事啊!!记录下来备忘
转载地址:http://www.cnblogs.com/guodongli/archive/2011/04/07/2007721.html
有人提到过两个问题:
1、假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒?
2、某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?
这两个问题在http://dev.tot.name/java/html/20090225/20090225101644.htm上做了解释,作者举的ppmm的例子蛮生动的哈。归结起来就是说:在windows环境下,进程调度是抢占式的。一个进程在运行态时调用sleep(),进入等待态,睡眠结束以后,并不是直接回到运行态,而是进入就绪队列,要等到其他进程放弃时间片后才能重新进入运行态。所以sleep(1000),在1000ms以后,线程不一定会被唤醒。sleep(0)可以看成一个运行态的进程产生一个中断,由运行态直接转入就绪态。这样做是给其他就绪态进程使用时间片的机会。总之,还是操作系统中运行态、就绪态和等待态相互转化的问题。
分享到:
相关推荐
总结java中长长面试的要点,迅速的掌握面经,拿到offer 1. Thread.sleep() 和 Object.wait() Thread.sleep() 和 Object.wait() 都可以抛出 InterruptedException。这个异常是不能忽略的,因为它是一个检查异常...
* 在java中真正开启线程的方法是这样的。 */ Thread t = new Thread(r); t.start(); setContentView(R.layout.activity_main); System.out.println("Activity-->"+ Thread.currentThread().getId()...
import java.applet.*; import java.awt.*; import java.awt.event.*; public class fangyuan extends Applet implements Runnable ...try{left.sleep(200);} catch(InterruptedException e){} }
JAVA通过线程 Thread.sleep控制打字速率来实现自动打字
class ServerThread extends Thread { private Socket s; public ServerThread(Socket s) { this.s = s; } @Override public void run() { BufferedReader br = null; try { br = new BufferedReader...
Thread.sleep(500); } catch (ImageFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); break; } catch (InterruptedException e...
Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } SimpleDateFormat dateformat = new SimpleDateFormat("hh:mm:ss"); String s = dateformat.format(new Date()); c.clock....
Java图片拉伸变形实例,其实和图片缩放十分相似,图片翻折,绘制图像的Image对象和Grahpics对象,得到MediaTracker实例,for(int i=0; i(imageHeight/2); i ) { //实现图片的翻折效果 thread.sleep(30); //线程...
Thread.sleep(100); } // Wait 100 milliseconds catch (InterruptedException e) { } } } public void start() { animator = new Thread(this); pleaseStop = false; ...
在上述例子2中,我们在小程序这个主线程中用构造方法Thread(this)创建了一个新的线程。This代表着小程序作为这个新的线程的目标对象,因此我们的小程序必须为这个新创建的线程实现Runnable接口,即小程序利用...
Thread.sleep(50); }catch(Exception e){} } while(x1>40&&x2!=0) { g.setColor(Color.white); g.fillOval(40,x1,50,50); g.fillRect(40,40,70,430); g.setColor(Color.yellow); g.fillOval(40...
3-Threads-Runnable-Sleep-Sync:并行编程示例:3使用Thread.sleep()的可运行实现的线程同步
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
Thread.sleep(1000*60*120); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); break; } } }; }.start(); //fetion....
可以很好的操作这些元素,但用java结合selenium来自动化测试时,并没有已经封装的类库,但是可以借助autoit和jacob来实现,本工具中提供了所需要的jar包和dll文件,按照说明文档的操作即可在java代码中使用,使用...
第3题 【单选题】【2.00分】【概念理解】 java中用于创建文件对象的类是 [单选题] * JAVA高级程序设计测试题含答案全文共43页,当前为第1页。 A. File(正确答案) B. Object C. Thread D. Frame E. 示例 第4题 【单选...
部分代码如下:client: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ ... Thread.sleep(100); } catch(Exception e) { } } } }
java.lang.Thread.sleep(1000); what_is(http_get_result.value()); what_is(http_post); var http_post_result = http_post.apply("http://localhost:8080/personinfo/put/2/age", "888"); java....
Thread.sleep(CPUTIME); long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd)); if (c0 != null && c1 != null) { long idletime = c1[0] - c0[0]; long busytime = c1[1] - c0[1]; ...
Thread.sleep((long)(Math.random()*100)); //随机分配时间,即运动员完成时间 System.out.println("Play"+id+" arrived."); }catch (InterruptedException e) { // TODO: handle exception e.printStackTrace...