java中的thread.sleep(1000) 用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的thread.sleep(1000) 用法相关的知识,希望对你有一定的参考价值。
请java高手帮忙看一下这个程序
class A
System.out.println("start");
Thread.sleep(1000);
System.out.println("end");
这个程序有啥错误
2.Thread.sleep()需要捕捉异常,加try/catch 参考技术A public class TestStaticAera
static
System.out.println("start");
try
Thread.sleep(1000);
catch (InterruptedException e)
e.printStackTrace();
System.out.println("end");
类里面可以存在静态块,在块里面可以写语句,类似上面。但是缺少了main方法,在执行的时候就会提示
java.lang.NoSuchMethodError: main
Exception in thread "main" 。
添加main方法,就不会报错了。 参考技术B 这个程序会产生异常InterruptException
应写为
try
Thread.sleep(1000);
catch(Exception e) 参考技术C 1.所有这些语句都必须在方法里面写
2.Thread.sleep()需要捕捉异常
try
Thread.sleep(1000);
catch(Exception e) 参考技术D A要继承Thread或实现Runable接口才能定义线程,输出语句不是输出字符串吗.根本没调用start方法.
JAVA,Thread.sleep()问题
package day20_pm;
/**
*
* 砸墙 睡觉 砸墙 睡觉 砸墙 砸墙 睡觉 砸墙 砸穿了 干嘛呢!破相了
*
*/
public class SleepDemo
public static void main(String[] args)
Thread t = new Thread()
public void run()
for (int i = 0; i < 5; i++)
System.out.println("睡觉");
try
Thread.sleep(10000);
catch (InterruptedException e)
// e.printStackTrace();
System.out.println("干嘛呢!破相了");
break;
;
t.start();
for (int i = 0; i < 5; i++)
System.out.println("砸墙");
try
Thread.sleep(5000);
catch (InterruptedException e)
e.printStackTrace();
System.out.println("砸穿了");
t.interrupt();// 打断线程t的sleep
为什么先执行砸墙………………
如果你不sleep 你会发现main thread都是先运行
所以你不用期待他们之前会有个什么顺序 这和你sleep与否 sleep时间 相关 但也不保证精确到你写的时间点就一定会1:2的输出
记住3点 一个线程start只意味这3件事
1 线程在新的调用堆栈中执行
2 线程从new(new之后没start前状态都是NEW可以用getState()看)状态变为RUNNABLE
3 当线程有机会(不是写在前面就先运行,机会是JVM说的算的你无法确定何时)运行时,它的目标run()将运行 参考技术A 多线程的启动也需要时间
再多线程启动的过程中
主线程继续往下面执行所以先执行砸墙 参考技术B 线程是不按照顺序执行的,你多运行几次,就会发现惊喜 参考技术C 主方法一个线程,t一个线程,t睡了10000,主方法睡了5000先醒,所以先砸墙
以上是关于java中的thread.sleep(1000) 用法的主要内容,如果未能解决你的问题,请参考以下文章