掌握好这个状态图,能更好的帮助你了解java线程的生命周期:
需要注意的几点:
1,wait()和notify()方法均需要在synchronized方法或块中调用,并且必须针对相同对象,因为这两个操作均需要获取该对象的锁才能完成操作。wait()时,线程会释放掉当前的monitor.
2,sleep(x)不会释放掉当前的monitor
wait()和nofity()用法举例:
package cn.fsf.thread;
public class ThreadTest {
class MyThread extends Thread {
@Override
public void run() {
System.out.println("thread " + Thread.currentThread().getName()
+ " is running...");
synchronized (this) {
try {
System.out.println("thread "
+ Thread.currentThread().getName()
+ " begin waiting...");
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("thread " + Thread.currentThread().getName()
+ " has bean nofitied");
}
}
public void test() throws InterruptedException {
Thread thread = new MyThread();
thread.start();
Thread.currentThread().sleep(1000L);// 主线程等待1s,确保thread已经进入等待状态
while (!thread.getState().equals(Thread.State.WAITING)) {
Thread.currentThread().yield();
}
synchronized (thread) {
thread.notify();
}
}
public static void main(String[] args) throws InterruptedException {
ThreadTest test = new ThreadTest();
test.test();
}
}
- 大小: 46.3 KB
分享到:
相关推荐
多线程线程状态转换图
哲学家就餐:Java多线程实例图形版 哲学家就餐是一个经典的Java多线程编程的实例,这是图形版。涉及到线程同步与互斥,临界区访问问题以及避免死锁的方法。 哲学家就餐:有五个哲学家绕着圆桌坐,每个哲学家...
(注意,本资源附带书中源代码可供参考) 多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍Java线程相关的设计模式概念,并且通过实际的Java程序范例和 UML图示来一一解说,书中...
1)程序功能:创建一个显示小球不断跳动并显示不同状态的动画程序。要达到无闪烁现象,显示速度快,占用内存较小的要求。即要使用双缓冲技术创建图像的显示方式,清除闪烁现象。使用线程分别解决准备图像、显示图像...
通过实现 Runnable 接口来进行多线程编程。 采用扫描算法(SCAN 算法)来进行电梯调度。 某一层楼 20 层,有五部互联的电梯。基于线程思想,编写一个电梯调度程序。(可考虑:楼层和电梯数可设置)。 每个电梯里面...
Java是一门多线程语言。 进程:每一个软件运行,就会在操作系统中产生一个进程。进程其实也是一个线程,也叫主线程。程序运行过程中,也可产生子线程,子线程也可以处理问题,一个程序可以同时进行多项任务。 线程的...
#Java多线程 #面试真题" 3、"深入理解线程池工作原理,掌握Executor框架下四种线程池的创建与应用,有效提升系统资源利用率。#Java线程池 #性能优化" 4、"线程状态流转图解析,从New到Runnable,再到Running,直至...
线程处于绪状态(可运行状态),也是随时等待着运行, 不要小看这个start,这个start决定了他是否是一个真正的线程实例,因为start为其准备了线程环境,你若只是普通调用run方法,那么这是 一个普通的方法。...
5.将生命游戏由单线程模式改为多线程模式,使用n个线程并行读取初始pgm文件,把图像分割为n份,分别计算出下一轮的细胞状态,然后重新整合为一个新一代细胞状态图。要求程序无死锁(Deadlock Free),无竞争条件(No...
多线程、网络编程的图.zip,包括线程状态图、网络模型、TCP客户端服务端通讯图。
多线程 目录 进程 进程的了解 线程 什么是线程 线程的组成 线程的创建 线程的状态 线程的方法 线程的安全问题 1.进程 1.1.进程的了解 简单的来说进程就是运行中的程序,简称为进程。 单核CPU在任意一个时间节点上,...
Java多线程 [TOC] 线程状态 1.New:尚未启动的线程的线程状态 2.Runnable:可运行线程的线程状态,等待CPU调度 3.Blocked:线程阻塞等待监视器锁定的线程状态 4.Waiting:等待线程的线程状态(wait、join、park) 5....
■ 多线程程序设计,进程和线程的联系和区别,多线程程序设计的一般方法,线程的生命周期,线程状态的控制,多线程的互斥和同步; ■ Java语言的网络编程技术和应用,Socket程序设计,Client/Server程序设计; ...
ThreadImRunnable.java 继承Runnable接口实现多线程 mulThread.java 创建多个线程对象的类 demoJoin.java 演示使用join()以确保主线程最后结束 clicker.java 一个计数用的线程类 demoPri.java 调用上面这个类...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
■ 多线程程序设计,进程和线程的联系和区别,多线程程序设计的一般方法,线程的生命周期,线程状态的控制,多线程的互斥和同步; ■ Java语言的网络编程技术和应用,Socket程序设计,Client/Server程序设计; ...
■ 多线程程序设计,进程和线程的联系和区别,多线程程序设计的一般方法,线程的生命周期,线程状态的控制,多线程的互斥和同步; ■ Java语言的网络编程技术和应用,Socket程序设计,Client/Server程序设计; ...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...