`
wolfcame
  • 浏览: 79078 次
  • 性别: 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线程状态流转图,我们可以更好地理解Java线程的生命周期,并提高Java多线程编程的效率和可靠性。

    java多线程下载图片

    在这个场景中,"java多线程下载图片"意味着我们将探讨如何使用Java来实现一个能够异步下载多个图片的系统。 首先,我们需要理解Java中的线程是如何创建和运行的。Java提供了两种创建线程的方式:继承Thread类和实现...

    Java多线程下载网络图片

    在Java编程中,多线程是一项关键技能,尤其在处理并发任务时,如我们的示例——"Java多线程下载网络图片"。这个场景展示了如何利用多线程技术提高程序性能,减少用户等待时间,同时优化系统资源的使用。下面我们将...

    Java多线程机制(讲述java里面与多线程有关的函数)

    Java多线程机制是Java编程中至关重要的一部分,它允许程序同时执行多个任务,提升应用程序的效率和响应性。以下是对各个知识点的详细说明: 9.1 Java中的线程: Java程序中的线程是在操作系统级别的线程基础上进行...

    Java多线程下载器

    Java多线程下载器是一种利用Java编程语言实现的高效文件下载工具,它通过将大文件分割成多个部分并同时下载,显著提高了下载速度。在Java中实现多线程下载器涉及许多关键概念和技术,包括线程、并发控制、网络I/O...

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

    《哲学家就餐:Java多线程实例图形版》是一个经典的多线程问题,它通过模拟哲学家们在用餐时可能出现的饥饿情况,来探讨和解决并发编程中的资源竞争问题。这个例子源自计算机科学家Edsger W. Dijkstra,他提出了这个...

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

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

    java多线程应用实现示例

    总结,这个"java多线程应用实现示例"通过小球运动的模拟,深入浅出地展示了Java多线程的运用,包括线程创建、同步、通信和线程池管理等关键概念。学习这个示例有助于理解和掌握Java多线程编程,为实际项目开发中的...

    java多线程迷宫生成程序

    【Java多线程迷宫生成程序】是一种利用Java编程语言实现的、基于多线程技术的动态迷宫生成示例。这个小程序展示了如何在计算机图形学中应用多线程来实时生成随机迷宫,同时也提供了视觉动画效果,使得观察迷宫生成的...

    Java多线程聊天

    Java多线程聊天程序是一种利用Java编程语言实现的并发通信应用,它允许多个用户在同一时间进行交互式的对话。在这个程序中,多线程技术被用来处理并发用户输入和消息传递,确保系统的高效运行和响应性。下面将详细...

    java实现多线程文件传输

    在Java编程语言中,实现多线程文件传输是一种优化程序性能、提高系统资源...在提供的`java多线程文件传输`压缩包中,可能包含了实现这些概念的示例代码,通过分析和学习,可以更好地理解多线程文件传输的原理和实践。

    java多线程学习资料

    ### Java多线程学习资料知识点解析 #### 一、引言 Java作为一种广泛使用的编程语言,在并发编程领域具有独特的优势。多线程是Java中实现并发处理的核心技术之一,能够显著提升程序的性能和响应性。本文将深入探讨...

    java多线程实现坦克大战游戏带声音图片

    本文将围绕“Java多线程实现坦克大战游戏带声音图片”这一主题,深入探讨如何利用Java的多线程技术来构建一个包含声音和图形的坦克战斗游戏。 首先,我们要理解Java中的线程。线程是程序执行的最小单元,每个线程都...

    Java课程设计 Java多线程以及图形用户界面编程详解(完整代码)

    一、Java多线程编程 多线程是Java的一个强大特性,它允许一个应用程序同时执行多个任务。在Java中,每个线程代表程序中的一个独立的执行流。通过创建和管理多个线程,开发者可以提高程序的并发性,使得程序在等待I/...

    Java多线程测试程序,

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。在本项目中,“Java多线程测试程序”利用了这一特性,结合图形用户界面(GUI)框架JFrame,实现了企鹅在界面上的动态...

    JAVA多线程的一个带UI界面的例子

    在Java编程中,多线程是一项关键特性,...总之,这个"JAVA多线程的一个带UI界面的例子"涵盖了Java多线程编程和GUI设计的核心概念,通过实际的代码示例,有助于开发者深入理解如何在实际应用中正确、高效地使用多线程。

    java 多线程编程 月食效果

    1. **Java多线程**:Java通过`Thread`类和`Runnable`接口提供了对多线程的支持。在这个项目中,可能有两个线程分别控制两个圆形——代表月亮和地球,这两个线程并行运行,以实现同时移动和交互的效果。使用`start()`...

    用java多线程写的贪吃蛇

    在本项目中,"用java多线程写的贪吃蛇"是一个基于Java编程语言实现的经典游戏——贪吃蛇。这个程序利用了Java的多线程技术来管理游戏的各个组件,如蛇、食物以及游戏窗口的更新。让我们深入探讨一下其中涉及的关键...

    实验八:Java多线程

    ### 实验八:Java多线程 #### 一、实验目的与知识点概述 在本实验中,我们将深入了解线程与进程的基本概念、它们之间的区别与联系,并掌握多线程技术在Java中的应用方法。具体包括以下几点: 1. **线程与进程的...

Global site tag (gtag.js) - Google Analytics