Java基础学习4_多线程(同步)
2012-09-22 00:08
288 查看
同步代码块:
synchronized(对象)
{
需要被同步的代码
}
对象如同锁。持有锁的线程可以在同步中执行。
没有持有锁的线程即使获取cpu的执行权,也进不去,因为没有获取锁。如火车上的卫生间
java.lang.Thread类
静态方法
currentThread() 返回当前线程实例
sleep(long millis) 当前线程休眠
yield() 当前线程停顿
dumpStack() 打印当前线程的调用栈
常用方法
start() 启动该线程,将导致run方法被自动调用
run() 必须覆盖该方法,在方法体中添加线程逻辑代码
interrupt() 用于将一个中断请求发送给线程
interrupted() 用于测试当前线程是否已经被中断
isInterrupted() 用于测试某个线程是否已经被中断
isAlive() 用于测试某个线程是否还活着
setPriority(int newPriority) 设置线程的优先级
join( ) 等待线程结束
两种创建线程方法的比较
使用Runnable接口
可以将代码和数据分开,形成清晰的模型
还可以从其他类继承
保持程序风格的一致性
直接继承Thread类
不能再从其他类继承
编写简单,可以直接操纵线程
无需使用Thread. currentThread()
同步函数的锁是this
以下是验证this
静态同步函数的锁是Class对象
单例设计 模式--------懒汉式
死锁
同步中嵌套同步
synchronized(对象)
{
需要被同步的代码
}
对象如同锁。持有锁的线程可以在同步中执行。
没有持有锁的线程即使获取cpu的执行权,也进不去,因为没有获取锁。如火车上的卫生间
java.lang.Thread类
静态方法
currentThread() 返回当前线程实例
sleep(long millis) 当前线程休眠
yield() 当前线程停顿
dumpStack() 打印当前线程的调用栈
常用方法
start() 启动该线程,将导致run方法被自动调用
run() 必须覆盖该方法,在方法体中添加线程逻辑代码
interrupt() 用于将一个中断请求发送给线程
interrupted() 用于测试当前线程是否已经被中断
isInterrupted() 用于测试某个线程是否已经被中断
isAlive() 用于测试某个线程是否还活着
setPriority(int newPriority) 设置线程的优先级
join( ) 等待线程结束
两种创建线程方法的比较
使用Runnable接口
可以将代码和数据分开,形成清晰的模型
还可以从其他类继承
保持程序风格的一致性
直接继承Thread类
不能再从其他类继承
编写简单,可以直接操纵线程
无需使用Thread. currentThread()
同步函数的锁是this
以下是验证this
静态同步函数的锁是Class对象
单例设计 模式--------懒汉式
死锁
同步中嵌套同步
相关文章推荐
- java基础知识回顾之java Thread类学习(五)--java多线程安全问题(锁)同步的前提
- JAVA基础学习(十一)--多线程一线程的创建,运行,同步和锁
- JAVA进阶学习-多线程基础详解(二)-同步
- Java基础-多线程-③线程同步之synchronized
- 多线程编程学习一(Java多线程的基础)
- 黑马程序员——Java基础——多线程的同步、死锁和等待唤醒机制
- Java多线程基础(并发、线程安全、同步、互斥)
- java多线程学习总结之一:基础原理
- Java多线程基础学习
- Java_基础—多线程(同步代码块和同步方法)
- JAVA学习——java多线程的同步和异步
- 黑马程序员-18-java基础-多线程(1)-线程与同步
- No_16_0325 Java基础学习第二十四天—多线程学习总结
- JAVA高并发学习笔记(二) 多线程基础
- 跟着实例学习java多线程8-同步容器类的问题
- java基础——多线程(线程的同步互斥与通信)
- Java基础学习笔记之多线程
- 黑马程序员_java基础学习笔记10_多线程
- java多线程学习——同步
- 黑马程序员--java多线程和单例模式--java学习日记3(基础知识)