class A implements Runnable
{
public void run()
{
}
}
public class Object12
{
public static void main(String args[]) throws Exception
{
Thread p = new Thread(new A(),"Pkj"); p.start();
p.sleep(1000);//问题1:为什么将这句话注释掉后,输出结果就不一样了 p.interrupt();//问题2:还有就是将这该语句放到p.sleep(1000)之前执行有什么区别? System.out.println(p.isInterrupted());
System.out.println(p.isAlive());
}
}问题3:p.sleep(1000)是指线程p睡眠吧,但为什么main中的语句也进入睡眠状态 (表达的不是很好。。换句话说:假如让线程p睡眠10秒,为什么p.sleep(10000)后面的一些输出语句 也要在10秒后输出?main也是一个线程,为什么它也进入了睡眠)
解决方案 »
- 纠结JAVA SOCKET 异常:java.io.StreamCorruptedException: invalid stream header
- jsp+sql+servlet实现学生信息管理系统
- 如何将ArrayList的所有对象的所有属性打印出来
- 请教关于最大化的问题
- 关于静态方法的调用的问题??
- jbx运行不了,jcreator可运行的文件!!!为什么
- 基本语法问题 关于String的
- 请问JB开发的Applet,如何直接载web中可以运行
- clone()方法和cloneable接口
- 使用组函数查询得到的结果集不为空?
- 我想调用get方法,然后根据这个类里面的一个falg的类型,来决定返回什么数据类型
- 哪位能帮我解决这个问题啊,谢谢!
interrupt也是个静态方法
System.out.println("exiting run");
能加深你的理解。问题1: p.sleep(1000);其实这个sleep是Thread的静态方法,在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
由于p线程里面没有执行东西,所以很快就结束了。这里睡眠的其实是main线程。
既然p结束了,当然就没有被阻塞,打印:
exiting run
false
false如果注释掉p.sleep(1000);由于调用了p.interrupt();这时p线程当然存在,打印
true
true
exiting run问题2
注释sleep的话,打印:
true
true
exiting run
这个好理解。p线程被阻塞了。当然还存活。最后又被调度了。所以有exiting run打印不注释sleep的话打印:
exiting run
false
false
也是main线程睡眠
这个太牛叉了吧。当然不是。
class A implements Runnable
{
public void run() throws Exception
{
for(int i=0; i<10; i++)
{
try
{
Thread.sleep(1000);
}
catch (Exception e)
{
System.out.println(e);
}
System.out.println(Thread.currentThread().getName() + "is running");
}
}
}
public class Object9
{
public static void main(String args[])throws Exception
{
Thread p1 = new Thread(new A(),"1~~~");
p1.start(); p.sleep(10000); //那此处为什么睡眠的是main,而且将该语句换成 Thread.sleep(10000) //也一样,这2个语句有什么区别么? for(int i=0; i<10; i++)
System.out.println("@@@@@@@@");
}
}