线程的状态

线程对象在不同的运行时期有不同的状态,状态信息就存在与State枚举类中。

验证New,Runnable,Terminated

new:线程实例化后还从未执行start()方法时的状态

runnable:线程进入运行的状态

terminated:线程被销毁时的状态

package Seven;

public class MyThread extends Thread {

    public MyThread() {
System.out.println("构造方法中的状态:" + Thread.currentThread().getState());
} @Override
public void run() {
System.out.println("run方法中的状态:" + Thread.currentThread().getState());
}
}
package Seven;

public class Run {

    // NEW,
// RUNNABLE,
// TERMINATED, // BLOCKED,
// WAITING,
// TIMED_WAITING, public static void main(String[] args) {
try {
MyThread t = new MyThread();
System.out.println("main方法中的状态1:" + t.getState());
Thread.sleep(1000);
t.start();
Thread.sleep(1000);
System.out.println("main方法中的状态2:" + t.getState());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }

注意:构造方法中的日志时main主线程的

验证Time_waiting

Time_waiting:线程执行了Thread.sleep()

package Seven;

public class MyThread extends Thread {

    @Override
public void run() {
try {
System.out.println("begin sleep");
Thread.sleep(10000);
System.out.println(" end sleep");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package Seven;

public class Run {
// NEW,
// RUNNABLE,
// TERMINATED, // BLOCKED,
// WAITING,
// TIMED_WAITING, public static void main(String[] args) {
try {
MyThread t = new MyThread();
t.start();
Thread.sleep(1000);
System.out.println("main方法中的状态:" + t.getState());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}

验证Blocked

blocked:出现在某一个线程等待锁的时候

package Seven;

public class MyService {
synchronized static public void serviceMethod() {
try {
System.out.println(Thread.currentThread().getName() + "进入了业务方法!");
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} }
package Seven;

public class MyThread1 extends Thread {

    @Override
public void run() {
MyService.serviceMethod();
} }
package Seven;

public class MyThread2 extends Thread {

    @Override
public void run() {
MyService.serviceMethod();
} }
package Seven;

public class Run {
// NEW,
// RUNNABLE,
// TERMINATED,
// BLOCKED,
// WAITING,
// TIMED_WAITING, public static void main(String[] args) throws InterruptedException {
MyThread1 t1 = new MyThread1();
t1.setName("a");
t1.start();
MyThread2 t2 = new MyThread2();
t2.setName("b");
t2.start();
//Thread.sleep(1000);
System.out.println("main方法中的t2状态:" + t2.getState()); }
}

验证waiting

waiting:是线程执行了object.wait()方法后所处的状态

package Seven;

public class Lock {

    public static final Byte lock = new Byte("0");

}
package Seven;

public class MyThread extends Thread {

    @Override
public void run() {
try {
synchronized (Lock.lock) {
Lock.lock.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package Seven;

public class Run {
// NEW,
// RUNNABLE,
// TERMINATED,
// BLOCKED,
// WAITING,
// TIMED_WAITING, public static void main(String[] args) {
try {
MyThread t = new MyThread();
t.start();
Thread.sleep(1000);
System.out.println("main方法中的t状态:" + t.getState());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}

最新文章

  1. Action中获取servletAPI对象的方法
  2. myeclipse调式与属性显示
  3. 【原创】可以换行的RadioGroup
  4. SD卡fat文件系统移植
  5. LA 4794 - Sharing Chocolate dp
  6. 复旦大学EWP菁英女性课程(复旦卓越女性课程改版后第一期) _复旦大学、女性课程、高级研修班、心理学、EWP_培训通课程
  7. vs10创建sqlclr部署失败
  8. Xcode-之Code Snippets Library
  9. 点击Robot Framework的桌面快捷图标后,没有反应(没有打开应用程序)
  10. 几种功能类似Linux命令汇总
  11. mysql常见的优化需要注意的点
  12. OpenResty 操作cookies
  13. 闲聊js中的apply、call和arguments
  14. 第一章 初识 MyBatis
  15. 论文阅读 | A Curriculum Domain Adaptation Approach to the Semantic Segmentation of Urban Scenes
  16. [转][C#]服务安装卸载命令
  17. Solve Error: "errcode": 85005, "errmsg": "appid not bind weapp hint"
  18. 洛谷P1040 加分二叉树【记忆化搜索】
  19. django会话session
  20. [中英对照]Introduction to DPDK: Architecture and Principles | DPDK概论: 体系结构与实现原理

热门文章

  1. android菜鸟学习笔记4----android项目结构
  2. mysql 查看或者修改数据库密码
  3. SPDIF接口细则详解
  4. CodeIgniter底层数据库类继承关系
  5. yum安装软件出错解决方法
  6. leetcode 890. Possible Bipartition
  7. joomla搬家之后打不开 首页404错误
  8. 学习c语言的第14天
  9. haproxysocket 参数记录
  10. c++的最小整数和最大整数