`
jie2workjava
  • 浏览: 151096 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

线程知识

    博客分类:
  • j2se
阅读更多

线程:

Java中的多线程是一种抢占式的机制而不是分时机制。线程主要有以下几种状态:可运行,运行,阻塞,死亡。抢占式机制指的是有多个线程处于可运行状态,但是只有一个线程在运行。

由于sleep()方法是Thread类的方法,因此它不能改变对象的机锁。所以当在一个Synchronized方法中调用sleep()时,线程虽然休眠了,但是对象的机锁没有被释放,其他线程仍然无法访问这个对象。而wait()方法则会在线程休眠的同时释放掉机锁,其他线程可以访问该对象。

       Yield()方法是停止当前线程,让同等优先权的线程运行。如果没有同等优先权的线程,那么Yield()方法将不会起作用。
 Wait()方法和notify()方法:当一个线程执行到wait()方法时,它就进入到一个和该对象相关的等待池中,同时失去了对象的机锁。当它被一个notify()方法唤醒时,等待池中的线程就被放到了锁池中。该线程从锁池中获得机锁,然后回到wait()前的中断现场。
join()方法使当前线程停下来等待,直至另一个调用join方法的线程终止。
值得注意的是:线程的在被激活后不一定马上就运行,而是进入到可运行线程的队列中。
图:
 
wait的是一个实例:
public class testThread {
	public static void main(String[] args) {
		MainThread mt = new MainThread();
		mt.start();
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		synchronized (mt) {
			mt.notify();
		}
		System.out.println("主线程结束。。。");
	}
	
}
class MainThread extends Thread{
	public void run() {
		super.run();
		System.out.println("线程开始运行。。。");
		synchronized (this) {
			try {
				this.wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		System.out.println("线程结束....");
	}
	
}
结果:
线程开始运行。。。
线程结束....
主线程结束。。。

 

* notify()      唤醒在此对象监视器上等待的单个线程

* notifyAll()   唤醒在此对象监视器上等待的所有线程

* wait   notify/notifyAll必须用在synchronized方法和代码块中

  • 大小: 51.4 KB
分享到:
评论

相关推荐

    多线程知识总结

    ### 多线程知识总结 #### 一、线程基础概念 **线程状态:** 在探讨多线程之前,我们需要了解线程的基本状态转换。一个典型的线程生命周期包括以下几个阶段: 1. **Start(启动):** 当线程被创建后调用`start()`...

    Java多线程知识点总结

    了解线程池的概念也是Java多线程编程中的一个重要知识点。线程池是一种多线程处理形式,它将线程和任务的概念分离开来,能够有效管理线程资源,减少线程创建和销毁的开销,提高程序性能。Java中可以通过Executors类...

    Java多线程知识点整理.pdf

    Java多线程知识点整理.pdf

    JAVA中的线程知识点整理

    以下是对Java线程相关知识点的详细说明: 1. **线程的创建与执行** - 创建线程有两种方式:继承`Thread`类或者实现`Runnable`接口。继承`Thread`直接重写`run()`方法,而实现`Runnable`接口则需要提供一个包含业务...

    Java线程知识总结

    Java线程知识是Java开发中不可或缺的部分,尤其在构建高性能、高并发的应用程序时显得尤为重要。线程允许程序在同一时间处理多个任务,提高了CPU的利用率和程序的响应速度。 在Java中,线程是由Java虚拟机(JVM)...

    Java多线程知识,龙果学院

    "Java多线程知识,龙果学院"这一课程显然是针对这部分内容进行深入讲解的资源,旨在帮助开发者提升在多任务环境下的编程能力。 一、Java多线程基础 1. **线程的概念**:线程是程序执行的最小单元,一个进程可以有...

    java多线程知识讲解及练习题

    Java 多线程知识讲解及练习题 Java 多线程基础知识的了解是 Java 程序设计的重要组成部分,本资源摘要信息对 Java 多线程基础知识进行了详细的讲解和练习题。 1. sleep() 和 wait() 的区别 sleep() 是 Thread 类...

    Thread线程知识体系 源码

    理解并掌握线程知识对于编写高效、可扩展的多线程程序至关重要。在这个"Thread线程知识体系 源码"中,我们可以深入探究Java线程的实现原理和最佳实践。 首先,`pom.xml`是一个Maven项目的配置文件,它定义了项目...

    Java多线程知识点思维导图

    对Java线程总体知识的梳理,主要描述了关键知识点,可以梳理一下思路!

    java线程知识的相关代码

    以下是对给定内容中涉及的Java线程知识的详细说明: **线程的创建** 1. **继承Thread类**:这是创建线程的直接方式。如示例中的`Demo`类,它继承了`Thread`类,并重写了`run()`方法。`run()`方法包含了线程要执行的...

    多线程知识点

    多线程在我们的开发应用中也是回很常用的,希望里面的内容能够可以帮助到你们解决掉你们想要的问题,这是我所期望看到的

    63-Java多线程知识点总结1

    Java多线程知识点总结 Java多线程知识点总结主要讲解了Java中多线程编程的基础知识,包括线程的启动、volatile变量、多线程共享数据、wait、notify、notifyAll等。 线程的启动 在Java中,线程的启动可以通过start...

    Java线程知识深入解析[定义].pdf

    Java 线程知识深入解析 Java 线程知识深入解析是一种重要的组成部分之一,在 Java 中,任何一个 Applet 的 paint() 和 update() 方法都是由 AWT(Abstract Window Toolkit) 绘图与事件处理线程调用的,而 Applet ...

    VC串口多线程知识汇总

    本篇文章将围绕"VC串口多线程知识汇总"的主题,结合提供的文件内容进行详细讲解。 首先,我们来了解一下串口通信。串口通信是一种通过串行数据传输的方式,通常用于设备间的短距离通信。在VC++中,实现串口通信主要...

    java线程知识点总结[归类].pdf

    Java 线程知识点总结 Java 线程是一种轻量级的进程,它是进程中的一个独立的控制单元,线程在控制着进程的执行。每个进程至少有一个线程。Java 虚拟机(JVM)启动时会有一个进程 java.exe,该进程至少有一个线程...

    Java线程知识深入解析[收集].pdf

    《Java线程知识深入解析》 Java线程是软件开发中的核心概念,特别是在多任务处理和并发编程中扮演着至关重要的角色。线程是进程中的单一顺序控制流,是操作系统调度的基本单元。在Java中,线程是程序执行的核心组成...

    java 多线程知识点思维导读

    java 多线程知识点思维导读

    多线程知识点.xmind

    多线程知识点.xmind

    多线程知识学习整理一阶段

    多线程知识学习整理一阶段

Global site tag (gtag.js) - Google Analytics