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

java 线程的几个方法

    博客分类:
  • java
 
阅读更多
Thread的方法

sleep()
1. sleep ()函数有一个参数,通过参数可使线程在指定的时间内进入停滞状态,当指定的时间过后,线程则自动进入可执行状态。blocked线程池是进入阻塞状态的线程,跟锁没有关系。
2. 当调用sleep ()函数后,线程不会释放它的“锁标志”。

yield()
1.通过yield ()函数,可使线程进入可执行状态,排程器从可执行状态的线程中重新进行排程。所以调用了yield()的函数也有可能马上被执行。
2. 当调用yield ()函数后,线程不会释放它的“锁标志”。

join()
调用某线程的该方法,将当前线程与该线程"合并",即等待该线程结束,再恢复当前线程的运行。当前线程就是当前这行代码所在的线程。


Object的方法

wait()、notify()和notifyAll()
1. wait()函数有两种形式:第一种形式接受一个毫秒值,用于在指定时间长度内暂停线程,使线程进入停滞状态。第二种形式为不带参数,代表waite()在notify()或notifyAll()之前会持续停滞。wait线程池是被wait的线程的集合,等待被notify。
2. 当对一个对象执行notify()时,会从线程等待池中移走该任意一个线程,并把它放到锁标志等待池中;当对一个对象执行notifyAll()时,会从线程等待池中移走所有该对象的所有线程,并把它们放到锁标志等待池中。锁标志等待池中的线程就是等待获取该对象的锁权限,synchronized也会让线程进入锁标志等待池。
3. 当调用wait()后,线程会释放掉它所占有的“锁标志”,从而使线程所在对象中的其它synchronized数据可被别的线程使用。


wait()和notify()因为会对加锁的对象的“锁标志”进行操作,所以它们必须在synchronized函数或synchronized block中进行调用。如果在non-synchronized函数或non-synchronized block中进行调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException的异常。通过对该对象的wait调用,会让当前线程进入等待状态。

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

相关推荐

    JAVA线程停止的方法

    本文将深入探讨Java线程停止的方法,特别是通过一个示例代码片段来解析如何利用标志变量(Flag)控制线程的生命周期,以及这种方法背后的原理与最佳实践。 ### Java线程停止方法概述 在Java中,直接调用线程的`...

    JAVA单线程多线程

    单线程的优势主要体现在以下几个方面: 1. **简化程序设计**:由于无需处理多线程间的竞争条件或死锁等问题,因此程序设计更加简单明了。 2. **易于调试**:单线程程序的调试相对容易,因为不存在多个线程之间复杂的...

    JAVA线程dump的分析

    在分析JAVA线程dump时,需要注意以下几点: 1. 不同的JAVA虚拟机的线程dump的创建方法和文件格式是不一样的,不同的JVM版本,dump信息也有差别。 2. 在实际运行中,往往一次dump的信息,还不足以确认问题,建议产生...

    java线程入门级书籍

    - **wait()和notify()方法**:这两个方法用于控制线程间的同步,`wait()`会使当前线程等待直到其他线程调用`notify()`或`notifyAll()`。 - **join()方法**:一个线程调用另一个线程的`join()`方法可以等待后者执行...

    Java多线程知识点总结

    Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...

    java线程实战手册

    2. **线程的启动与生命周期**:通过调用start()方法启动线程,线程将经历新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和终止(Terminated)等几个状态。 3. **线程同步机制**:Java提供了多种...

    电子书《java线程》

    书中可能涵盖了以下几个关键知识点: 1. **线程的创建与启动**:通过创建Thread对象或实现Runnable接口,然后调用start()方法启动线程。 2. **同步机制**:包括synchronized关键字、wait()、notify()和notifyAll()...

    java自定义线程模型处理方法分享

    在Java中,实现自定义线程模型通常涉及以下几个关键组件: 1. **任务模型(Task Model)**:这是执行具体工作的基础,比如`TaskEvent`类就是一个任务模型的例子。它包含任务的创建时间、唯一ID、是否已取消等属性,...

    java程序 两个线程实现学生成绩的读写

    Java程序中的多线程技术是实现并发操作的关键,尤其在处理并发读写数据时,如在本例中,我们有两条线程分别负责读取和写入学生的成绩...通过学习这个程序,我们可以深入理解Java线程的使用以及并发编程中的核心概念。

    java 多线程并发实例

    在并发控制中,我们通常会遇到以下几个关键概念: - 同步:确保同一时间只有一个线程访问共享资源,防止数据不一致。Java提供了synchronized关键字以及Lock接口(如ReentrantLock)来实现同步。 - volatile:修饰...

    JAVA100例之实例64 JAVA线程间通讯

    在"JAVA100例之实例64 JAVA线程间通讯"这个主题中,我们将深入探讨Java中实现线程间通信的几种主要方法。 1. **共享数据**:最直观的线程间通信方式是通过共享内存空间,即共享变量。只要对共享变量的操作是线程...

    Java的线程和Java AppletJava的线程和Java AppletJava的线程和Java Applet

    线程有以下几个关键特点: 1. **线程与进程**:线程是进程内的一个执行单元,多个线程共享进程的内存空间和资源,而进程是操作系统分配资源的基本单位,每个进程拥有独立的内存区域。 2. **线程模型**:Java中的...

    java多线程处理数据库数据

    通过以上方法,我们可以在Java中有效地利用多线程处理数据库数据,提高程序的并发能力和效率。记得在设计时充分考虑线程间的协作与同步,以及数据库连接的管理和优化,以确保程序的稳定性和性能。

    java多线程分页查询

    针对数据量较大的场景,本文介绍的多线程分页查询方案主要包含以下几个步骤: - **步骤1:计算总记录数**。首先通过执行一个统计查询语句获取总的记录数,为后续的分页提供依据。 - **步骤2:设置页面信息**。根据...

    Java线程讲解Java线程讲解

    ### Java线程详解 在Java开发中,线程(Thread)是执行程序的基本单位,它是一种轻量级的进程,可以实现并发操作,提高程序的运行效率。本篇内容将围绕Java线程的基础知识、创建方式、生命周期以及线程同步等核心...

    Java多线程编程

    4. **Object方法**:`Object`类中的几个方法在多线程环境下特别重要,如`wait()`, `notify()`, 和 `notifyAll()`。这些方法用于对象监视器机制,它们必须在同步块或方法中使用,否则会导致`...

    几个java线程的例子

    本篇文章将详细讲解几个Java线程的实例,帮助你深入理解这一关键概念。 首先,我们需要了解Java中的线程创建方式。在Java中,有两种主要的创建线程的方式:继承`Thread`类和实现`Runnable`接口。当继承`Thread`类时...

    java多线程几个概念

    ### Java多线程几个核心概念 #### 一、理解多线程 多线程是一种让程序内部的不同任务或计算能够并发执行的技术。在Java中,多线程的应用极为广泛,可以大大提高程序的效率和响应性。多线程的核心概念包括以下几个...

    Java 线程常用方法总结

    Java线程是并发编程的核心部分,它允许程序同时执行多个任务。在Java中,线程的创建和管理涉及几个关键方法以及一个关键字:`run()`, `start()`, `wait()`, `notify()`, `notifyAll()`, `sleep()`, `yield()`, `join...

Global site tag (gtag.js) - Google Analytics