`
wolfcame
  • 浏览: 78070 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java多线程状态图

    博客分类:
  • J2SE
阅读更多
掌握好这个状态图,能更好的帮助你了解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
分享到:
评论
1 楼 北极光之吻 2012-06-18  

相关推荐

    Java-多线程线程状态转换图

    多线程线程状态转换图

    哲学家就餐:Java多线程实例图形版

    哲学家就餐:Java多线程实例图形版 哲学家就餐是一个经典的Java多线程编程的实例,这是图形版。涉及到线程同步与互斥,临界区访问问题以及避免死锁的方法。    哲学家就餐:有五个哲学家绕着圆桌坐,每个哲学家...

    java多线程设计模式详解(PDF及源码)

    (注意,本资源附带书中源代码可供参考) 多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍Java线程相关的设计模式概念,并且通过实际的Java程序范例和 UML图示来一一解说,书中...

    实验十 java多线程(文档中包含可执行源码)

    1)程序功能:创建一个显示小球不断跳动并显示不同状态的动画程序。要达到无闪烁现象,显示速度快,占用内存较小的要求。即要使用双缓冲技术创建图像的显示方式,清除闪烁现象。使用线程分别解决准备图像、显示图像...

    基于Java实现(图形界面)多线程电梯调度【100010850】

    通过实现 Runnable 接口来进行多线程编程。 采用扫描算法(SCAN 算法)来进行电梯调度。 某一层楼 20 层,有五部互联的电梯。基于线程思想,编写一个电梯调度程序。(可考虑:楼层和电梯数可设置)。 每个电梯里面...

    JavaSE多线程

    Java是一门多线程语言。 进程:每一个软件运行,就会在操作系统中产生一个进程。进程其实也是一个线程,也叫主线程。程序运行过程中,也可产生子线程,子线程也可以处理问题,一个程序可以同时进行多项任务。 线程的...

    上海某大厂java面试真题与解析

    #Java多线程 #面试真题" 3、"深入理解线程池工作原理,掌握Executor框架下四种线程池的创建与应用,有效提升系统资源利用率。#Java线程池 #性能优化" 4、"线程状态流转图解析,从New到Runnable,再到Running,直至...

    一张图读懂Java多线程

    线程处于绪状态(可运行状态),也是随时等待着运行, 不要小看这个start,这个start决定了他是否是一个真正的线程实例,因为start为其准备了线程环境,你若只是普通调用run方法,那么这是 一个普通的方法。...

    JAVA生命游戏多线程模式(使用n个线程并行读取初始pgm文件,把图像分割为n份,分别计算出下一轮的细胞状态,然后重新整合)

    5.将生命游戏由单线程模式改为多线程模式,使用n个线程并行读取初始pgm文件,把图像分割为n份,分别计算出下一轮的细胞状态,然后重新整合为一个新一代细胞状态图。要求程序无死锁(Deadlock Free),无竞争条件(No...

    多线程、网络编程的图.zip

    多线程、网络编程的图.zip,包括线程状态图、网络模型、TCP客户端服务端通讯图。

    Java多线程的初识与简单的安全问题解决

    多线程 目录 进程 进程的了解 线程 什么是线程 线程的组成 线程的创建 线程的状态 线程的方法 线程的安全问题 1.进程 1.1.进程的了解 简单的来说进程就是运行中的程序,简称为进程。 单核CPU在任意一个时间节点上,...

    java7源码-thread:多线程相关的学习

    Java多线程 [TOC] 线程状态 1.New:尚未启动的线程的线程状态 2.Runnable:可运行线程的线程状态,等待CPU调度 3.Blocked:线程阻塞等待监视器锁定的线程状态 4.Waiting:等待线程的线程状态(wait、join、park) 5....

    Java清华教程.rar

     ■ 多线程程序设计,进程和线程的联系和区别,多线程程序设计的一般方法,线程的生命周期,线程状态的控制,多线程的互斥和同步;  ■ Java语言的网络编程技术和应用,Socket程序设计,Client/Server程序设计; ...

    Java开发技术大全(500个源代码).

    ThreadImRunnable.java 继承Runnable接口实现多线程 mulThread.java 创建多个线程对象的类 demoJoin.java 演示使用join()以确保主线程最后结束 clicker.java 一个计数用的线程类 demoPri.java 调用上面这个类...

    java源码包---java 源码 大量 实例

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    清华大学java教程

     ■ 多线程程序设计,进程和线程的联系和区别,多线程程序设计的一般方法,线程的生命周期,线程状态的控制,多线程的互斥和同步;  ■ Java语言的网络编程技术和应用,Socket程序设计,Client/Server程序设计; ...

    JAVA清华教程 详细

     ■ 多线程程序设计,进程和线程的联系和区别,多线程程序设计的一般方法,线程的生命周期,线程状态的控制,多线程的互斥和同步;  ■ Java语言的网络编程技术和应用,Socket程序设计,Client/Server程序设计; ...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

Global site tag (gtag.js) - Google Analytics