【Java重新学习】多线程-2
来源:互联网 发布:java入门教程下载 编辑:程序博客网 时间:2024/05/22 14:58
锁是控制多个线程对资源进行访问的工具。
aschronized同步代码块对于锁的操作是隐式的。
(JDK5将同步和锁封装成了对象,并将操作锁的隐式方式定义到了该对象中。将隐式操作变成显式操作。)
Lock实现提供了比使用aschronized方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关condition对象。
condition将Object监视器方法分解成截然不同的对象,以便将这些对象与任意Lock组合使用,为每个对象提供多个等待set(wait---set)。
Lock接口:lock()获取锁,unlock()释放锁,通常需定义在finally代码块中。
import java.util.concurrent.locks.*;
Lock lock=new ReentrantLock();
Condition接口:
Signal();
await();
awaitAll();
wait和sleep的区别:
1.wait可以指定时间也可以不指定。sleep必须指定时间。
2.在同步中,对cpu的执行权和锁的处理不同。wait释放执行权,释放锁。sleep释放执行权,不释放锁。
停止线程:
1、stop方法,已经过时。
2、run方法结束。(定义标记)但是如果线程处于冻结状态,就无法读取标记。
3、interrupt()中断线程。向线程发送中断请求,线程的中断状态将被设置为true。如果目前该线程被一个sleep调用阻塞,那么抛出InterruptException
要想弄清中断状态是否被置位,首先调用静态的Thread.CurrentThread方法获得当前线程,然后调用isInterrupted方法。
while(!Thread.currentThread().isInterrupted() && more work to do)
{
do more work
}
static Boolean interrupted()测试当前线程是否被中断。这是一个静态方法---将线程的中断状态置为false
setDaemon()方法
将线程标记为守护线程或用户线程。---后台线程(前台线程需手动结束,而后台线程,如果所有前台线程结束,后台线程无论出于什么状态,都自动结束。)
该方法必须在启动线程前调用。
Join方法 等待终止指定的线程
toString()方法 返回线程名,优先级
线程属性:
优先级 setPriority方法提高或降低线程的优先级。
void setPriority(int newPriority)
static void yield()导致当前线程处于让步状态。
0 0
- 【Java重新学习】多线程-2
- 【笨鸟先飞】Java重新学习日记10---多线程
- 【Java重新学习】Java多线程-多线程的创建
- 重新开始学习Java
- 重新学习java
- 开始重新学习JAVA
- 重新拾起java学习
- 重新学习JAVA
- java重新学习
- java重新学习
- 重新学习JAVA
- Java重新学习01
- Java的重新学习
- Java数据类型重新学习
- 重新开始学习JAVA基础
- 重新学习java的起点
- 重新学习JAVA的笔记
- 重新学习java网络编程
- CSS兼容写法中zoom:1的作用
- iPhone开发之-save image to adressbook
- 二.redis 数据类型
- 利用myeclipse工具快速hibernate开发遇到问题:java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabas
- Storm配置项详解
- 【Java重新学习】多线程-2
- 使用IE自带的打印控件进行套打
- gcc基础
- java web
- iPhone开发之-ios系统中各种设置项的url链接
- Http/1.1 (RFC 2616)阅读笔记
- Xcode5 设定启动时默认方向
- CMake 使用
- linux 信号&信号处理