for和sleep函数的区别
Java中sleep方法和wait方法的区别?
Java中sleep方法和wait方法的区别?
Java中的sleep和wait方法都是线程Thread里边的概念。如果想了解这两个方法之间的区别。从根本上你得了解线程Thread的六大状态,上边的这两个方法的执行就会导致,线程状态的转换。
1. 线程的六大状态:1)六大状态概述:
NEW:线程刚创建RUNNABLE:在JVM中正在运行的线程BLOCKED:线程处于阻塞状态,等待监视锁,可以重新进行同步代码块中执行WAITING:等待状态TIMED_WAITING:调用sleep() join() wait()方法可能导致线程处于等待状态TERMINATED:线程执行完毕,已经退出2)六大状态图:
3)六大状态简单解读
从图中可以清晰的看出,sleep和wait方法处在什么位置。接下来具体介绍一下,这两个方法的具体应用。
2. sleep和wait方法的具体应用:1)sleep 休眠方法:
Static void sleep(long ms)该方法会使当前线程进入阻塞状态指定毫秒,当阻塞指定毫秒后,当前线程会重新进入Runnable状态,等待划分时间片。2)wait方法一般是跟notify方法连用的:
多线程之间需要协调工作。如果条件不满足则等待。当条件满足时,等待该条件的线程将被唤醒。在Java中,这个机制实现依赖于wait/notify。
3. 这两个方法的详细介绍:想要详细了解这两个方法,甚至是多线程的同学,可以参考,我写的两篇技术文章,非常详细:
Java:线程的六大状态、基于代码实战的线程创建及六个常用方法Java:线程并发问题、基于代码实战的4种锁机制及多线程协作编程可以关注 “ 互联网IT技术 ” 这个头条号,这里边就有这两篇文章。同时这个头条号,每天都会发送非常实用的技术文章,写的非常详细,易懂,欢迎关注。
用for循环,和while循环分别完成延时100毫秒的延时函数,假设晶振为12m?
最好直接利用定时器延时,定时1毫秒,程序中调用延时函数就行了,Delay(100):uintcount//定义外部变量Delay(uintk)//延时函数{countkwhile(count!0)}TIME0()interrupt1//定时器0中断函数{TH00XFCTL00X18count--}