`
zheng0324jian
  • 浏览: 182619 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java的线程问题--sleep和wait

    博客分类:
  • java
 
阅读更多

Java线程的sleep和wait有共同的作用,就是都能使当前线程任务停止,但是他们有很大的不同。

关于sleep和wait方法主要区别有:

 

1、这两个方法来自不同的类,sleep是Thread类的方法,wait是Object的方法。

2、sleep表示让一个线程进入睡眠,等待一定时间之后,自动醒来进入到可运行状态。等待进入运行态,不需要唤醒。

     wait是object的成员方法,一个对象调用了wait也能使线程停止,但是需要notify()或者notifyAll()唤醒进程。

3、sleep方法并不释放锁,而wait方法释放锁,可以使其他线程使用同步控制块或者方法。

     所以wait,notify,notifyAll 只能在同步控制方法或同步控制块里面使用。而sleep则没有限制。

4、sleep必须捕获异常,因为当一个线程在sleep过程中,可能有其他的方法调用它的interrupt,

     产生intertuptException  异常,如果不捕获这个异常,线程就会异常终止。进入terminated状态。

5、sleep是一个静态方法,只对当前对象有效,通过t.sleep想让t对象进入sleep是错误的,他只会使当前线程进入sleep.

 

 

分享到:
评论

相关推荐

    JAVA线程高级-线程按序交替执行

    在Java编程中,多线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而提高了系统的效率和响应性。然而,在某些场景下,我们可能需要控制线程的执行顺序,确保它们按照特定的顺序交替运行,这在并发编程...

    java多线程源码-source

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了系统的效率和响应性。在Java中,实现多线程主要有两种方式:继承Thread类和实现Runnable接口。接下来,我们将深入探讨这两个方法以及相关的...

    计算机后端-Java-Java核心基础-第20章 多线程 16. sleep()和wait()的异同.avi

    计算机后端-Java-Java核心基础-第20章 多线程 16. sleep()和wait()的异同.avi

    Java多线程-多线程知识点总结和企业真题

    - `wait()`、`notify()`和`notifyAll()`方法用于线程之间的通信。 - `wait()`使当前线程等待,直到被另一个线程唤醒或等待时间到达。 - `notify()`随机唤醒一个等待线程。 - `notifyAll()`唤醒所有等待线程。 9...

    Java线程中wait,await,sleep,yield,join用法总结.pdf

    以上就是对Java线程中wait、await、sleep、yield、join用法的总结。这些方法在实际开发中,对于控制多线程运行的时序和协调非常关键。理解这些方法的正确使用方式是掌握Java并发编程的基础。同时,使用时需特别注意...

    Java多线程-线程间的通信

    总结来说,`wait()`和`sleep()`虽然都可以使线程暂停执行,但它们的目的和适用场景不同。`wait()`更多用于线程间的通信和协作,而`sleep()`则用于简单的延时控制。在实际开发中,根据具体需求选择合适的方法是非常...

    Java-for-thread.zip_java 线程

    Java线程是编程中的一个重要概念,特别是在开发高并发和实时响应的应用程序时。Java作为一种多线程编程语言,允许开发者在同一程序中同时执行多个独立的代码段,这极大地提高了程序的效率和性能。下面我们将详细探讨...

    JVM线程状态和Thread.sleep的实现原理探究.pdf

    在探究JVM线程状态以及Thread.sleep的实现原理时,我们首先需要了解Java线程与操作系统线程之间的关系。在Java虚拟机(JVM)中,每个线程通常都是以一对一的关系映射到操作系统线程上的。然而,尽管两者在实现上是...

    java编程 ---线程

    线程调度由操作系统负责,Java提供了一些控制线程优先级和同步的机制。 **3. 线程的基本控制** 线程的基本控制包括:`sleep()`让线程暂停一段时间,`join()`使当前线程等待另一个线程结束,`yield()`让当前线程让出...

    多线程sleep,yield,wait区别

    `sleep`, `yield`, 和 `wait` 是 Java 中用于线程管理的三个重要方法,它们各自有着不同的功能和用途。理解它们的区别有助于编写出更加高效和可控的多线程程序。 1. **sleep() 方法** - `Thread.sleep(millisecond...

    java sleep()和wait()

    综上所述,`sleep()`方法更适用于简单的线程延迟或节奏控制,而`wait()`方法则更适合于实现更复杂的线程间通信和同步。在实际应用中,开发者应根据具体需求选择合适的方法来实现线程的控制和同步。

    Java多线程-线程的生命周期

    线程状态之间的转换是由Java API的方法调用触发的,如`start()`、`sleep()`、`wait()`、`join()`等。了解这些状态和转换机制对于编写高效的并发程序至关重要,因为它有助于避免死锁、饥饿和其他并发问题。在实际编程...

    java-Thread-study-summary.zip_java 多线程

    Java线程有10个优先级,`MIN_PRIORITY`(1),`NORM_PRIORITY`(5)和`MAX_PRIORITY`(10)。较高的优先级并不意味着线程一定先执行,而是增加了获取CPU资源的概率。 5. **守护线程(Daemon)** 守护线程是支持...

    Java的多线程-线程间的通信.doc

    Java提供了多种机制来实现线程间的通信,包括使用wait(), notify()和notifyAll()方法,以及使用synchronized关键字控制并发访问共享资源。这些方法都定义在java.lang.Thread类中。 1. **wait(), notify()和...

    java多线程Demo

    Java线程有10个优先级(MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY),默认优先级是NORM_PRIORITY。但是,线程优先级并不保证绝对的执行顺序,操作系统调度策略可能影响实际执行顺序。 7. join()方法: 一个线程...

    java常见面试题---线程篇

    - Java线程有10个优先级,`Thread.MIN_PRIORITY`(1)、`Thread.NORM_PRIORITY`(5)和`Thread.MAX_PRIORITY`(10),但实际操作系统的调度并不完全依赖优先级。 7. **守护线程(Daemon)**: - 守护线程不阻碍...

    Java线程(上).pdf 东方标准 多线程

    Java线程的优先级可以通过`setPriority()`方法设置,但实际的调度结果取决于具体的平台和操作系统。 #### 示例 以下是一个简单的线程状态示例,演示了线程在运行过程中状态的变化。 ```java public class ...

    Java线程培训资料

    ### Java线程培训资料知识点详解 #### 一、Java线程基本概念 1. **如何编写与启动线程** - **方式一:继承Thread类** ```java class MyThread extends Thread { @Override public void run() { // 业务逻辑 ...

    Java学习教程-探究JAVA线程状态及转化视频

    在学习Java线程时,还应掌握同步机制,包括`synchronized`关键字、`wait()`、`notify()`和`notifyAll()`方法,以及`ReentrantLock`、`Semaphore`、`CyclicBarrier`等高级并发工具。理解这些工具的用法和限制,可以...

    Java线程基础教程完整版

    Java线程是Java编程中的重要概念,它允许程序同时执行多个任务,从而提高了程序的效率和响应性。在Java中,线程是程序执行的最小单位,由Java虚拟机(JVM)管理。本教程将深入讲解Java线程的基础知识,帮助你掌握多...

Global site tag (gtag.js) - Google Analytics