- 浏览: 26800 次
- 性别:
- 来自: 杭州
最新评论
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调用,会让当前线程进入等待状态。
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调用,会让当前线程进入等待状态。
发表评论
-
spring bean初始化
2015-05-20 17:51 4861.配置文件中每一个<bean>解析成一个Bean ... -
java 基本类型存储解析
2012-07-11 12:53 996byte b=-128; byte b=127; 都是可以编 ... -
nio
2012-01-31 16:57 812原来的I/O包和NIO处理数据最大的不同之处在于数据打 ... -
null
2012-01-30 17:34 563null可以转换成任何类的对象 -
java 线程
2012-01-17 14:37 739现在的系统的都是分时系统,达到多进程的效果。cpu只是将时间 ... -
java 访问修饰符
2012-01-12 10:34 731对于类成员(字段和方法)的访问权限来说, public:所有类 ... -
设计模式初学
2012-01-10 17:39 691代理模式只是原来对象的一个替身(原来对象约束了代理的行为) ... -
jndi学习
2012-05-26 19:10 723jndi--命名和目录服务api 用于查找远程的资源,例如 ... -
java 泛型学习--类型擦除
2011-12-26 17:58 1733类型擦除(type erasure)。 Java中的泛型基本上 ... -
java 泛型学习--泛型方法
2011-12-26 17:30 949通过在类的定义中添加 ... -
java 泛型学习--类型通配符
2011-12-26 17:17 893假设您具有该方法: void printList(Lis ... -
java 泛型学习
2011-12-26 16:42 774除了异常类型、枚举或匿名内部类以外,任何类都可以具有类型参数。 ... -
servlet path学习
2011-12-22 15:40 952servlet path就是取从context path后开始 ... -
log4j 学习
2011-12-16 11:01 951Log4j除了可以记录程序 ... -
java 可变长参数
2011-12-15 15:15 336[size=x-large] java 的可变长参数 例如: ... -
java垃圾回收
2011-12-12 19:16 643Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现 ... -
velocity性能优化
2011-12-09 11:16 9501.char to byte 字符转变字节,流用字节去输出 ... -
velocity 宏
2011-12-12 19:16 11241.方法当作参数化 当使用引用作为参数传递给Velocity ... -
ThreadLocal
2011-11-10 14:48 687每个线程有一个ThreadLocalMap对象,这是一个Map ... -
struts2 Codebehind Plugin
2011-11-08 15:32 3281.为未定义的action指定mapping When no ...
相关推荐
本文将深入探讨Java线程停止的方法,特别是通过一个示例代码片段来解析如何利用标志变量(Flag)控制线程的生命周期,以及这种方法背后的原理与最佳实践。 ### Java线程停止方法概述 在Java中,直接调用线程的`...
单线程的优势主要体现在以下几个方面: 1. **简化程序设计**:由于无需处理多线程间的竞争条件或死锁等问题,因此程序设计更加简单明了。 2. **易于调试**:单线程程序的调试相对容易,因为不存在多个线程之间复杂的...
在分析JAVA线程dump时,需要注意以下几点: 1. 不同的JAVA虚拟机的线程dump的创建方法和文件格式是不一样的,不同的JVM版本,dump信息也有差别。 2. 在实际运行中,往往一次dump的信息,还不足以确认问题,建议产生...
- **wait()和notify()方法**:这两个方法用于控制线程间的同步,`wait()`会使当前线程等待直到其他线程调用`notify()`或`notifyAll()`。 - **join()方法**:一个线程调用另一个线程的`join()`方法可以等待后者执行...
Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...
2. **线程的启动与生命周期**:通过调用start()方法启动线程,线程将经历新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和终止(Terminated)等几个状态。 3. **线程同步机制**:Java提供了多种...
书中可能涵盖了以下几个关键知识点: 1. **线程的创建与启动**:通过创建Thread对象或实现Runnable接口,然后调用start()方法启动线程。 2. **同步机制**:包括synchronized关键字、wait()、notify()和notifyAll()...
在Java中,实现自定义线程模型通常涉及以下几个关键组件: 1. **任务模型(Task Model)**:这是执行具体工作的基础,比如`TaskEvent`类就是一个任务模型的例子。它包含任务的创建时间、唯一ID、是否已取消等属性,...
Java程序中的多线程技术是实现并发操作的关键,尤其在处理并发读写数据时,如在本例中,我们有两条线程分别负责读取和写入学生的成绩...通过学习这个程序,我们可以深入理解Java线程的使用以及并发编程中的核心概念。
在并发控制中,我们通常会遇到以下几个关键概念: - 同步:确保同一时间只有一个线程访问共享资源,防止数据不一致。Java提供了synchronized关键字以及Lock接口(如ReentrantLock)来实现同步。 - volatile:修饰...
在"JAVA100例之实例64 JAVA线程间通讯"这个主题中,我们将深入探讨Java中实现线程间通信的几种主要方法。 1. **共享数据**:最直观的线程间通信方式是通过共享内存空间,即共享变量。只要对共享变量的操作是线程...
线程有以下几个关键特点: 1. **线程与进程**:线程是进程内的一个执行单元,多个线程共享进程的内存空间和资源,而进程是操作系统分配资源的基本单位,每个进程拥有独立的内存区域。 2. **线程模型**:Java中的...
通过以上方法,我们可以在Java中有效地利用多线程处理数据库数据,提高程序的并发能力和效率。记得在设计时充分考虑线程间的协作与同步,以及数据库连接的管理和优化,以确保程序的稳定性和性能。
针对数据量较大的场景,本文介绍的多线程分页查询方案主要包含以下几个步骤: - **步骤1:计算总记录数**。首先通过执行一个统计查询语句获取总的记录数,为后续的分页提供依据。 - **步骤2:设置页面信息**。根据...
### Java线程详解 在Java开发中,线程(Thread)是执行程序的基本单位,它是一种轻量级的进程,可以实现并发操作,提高程序的运行效率。本篇内容将围绕Java线程的基础知识、创建方式、生命周期以及线程同步等核心...
4. **Object方法**:`Object`类中的几个方法在多线程环境下特别重要,如`wait()`, `notify()`, 和 `notifyAll()`。这些方法用于对象监视器机制,它们必须在同步块或方法中使用,否则会导致`...
本篇文章将详细讲解几个Java线程的实例,帮助你深入理解这一关键概念。 首先,我们需要了解Java中的线程创建方式。在Java中,有两种主要的创建线程的方式:继承`Thread`类和实现`Runnable`接口。当继承`Thread`类时...
### Java多线程几个核心概念 #### 一、理解多线程 多线程是一种让程序内部的不同任务或计算能够并发执行的技术。在Java中,多线程的应用极为广泛,可以大大提高程序的效率和响应性。多线程的核心概念包括以下几个...
Java线程是并发编程的核心部分,它允许程序同时执行多个任务。在Java中,线程的创建和管理涉及几个关键方法以及一个关键字:`run()`, `start()`, `wait()`, `notify()`, `notifyAll()`, `sleep()`, `yield()`, `join...