Java Thread API
来源:互联网 发布:淘宝采集软件收费吗 编辑:程序博客网 时间:2024/05/20 05:47
Java Thread API
线程安全问题
《Java并发编程实战》中,对线程安全问题的描述为:当多个线程同时访问共享状态时,共享状态的不一致问题。
简单地讲,就是多个线程同时访问某个共享对象时,如果导致该对象状态不一致,就出现了线程安全问题。
多个线程并发访问某个共享对象,这种情况称为竞态条件(race condition)
线程互斥
通过synchronized关键字修饰方法或代码块,每个线程需要持有对象锁,才能运行该代码片段。
public synchronized void method1() { //同步方法} public void method2() { synchronized(this) { //同步代码块 }}
对象锁也叫监视器(monitor),锁是针对对象的,两个对象的同步方法可以并发执行。Java中每个对象都可以作为锁对象使用。
public synchronized void method1() { //同步方法}//obj1和obj2提供了各自的对象锁obj1.method1();obj2.mothod1();
线程协作
Object对象提供了如下方法:
void wait()
void notify()
void notifyAll()
上述方法执行的前提是,当前线程获取了对象锁。
1.wait
当执行wait方法,当前线程会进入锁对象的线程等待队列,然后释放锁。
2.notify
当执行notify方法,会从该对象的线程等待队列中,选择一个等待的线程移出等待队列。
注意:执行完notify方法,当前线程不会释放锁,直到synchronized代码块运行结束,才会释放锁。
notifyAll
当执行notifyAll方法,会将该对象的线程等待队列中的所有线程移除等待队列。
和notify方法一样,该方法执行后不会立刻释放锁。
多线程程序评价标准
1.安全性
不损坏对象,使对象的状态保持一致性
2.生存性
必要的处理一定能够被执行
3.可复用性
类能够重复利用。类可以作为组件,从软件中抽离出来。
这就要求架构设计的低耦合性、高可扩展性。
对于并发类,还要求将线程的互斥机制和方针隐藏到类中。
4.性能
吞吐量:单位时间完成的处理数量
响应性:从发出请求到收到响应的时间
- JAVA API备忘----Thread
- Java API:Thread
- Java Thread API
- Java Thread Interrupt && API Introduction
- java API------Thread类join()方法
- Thread API
- Thread Api
- java.lang.Thread API文档中西文梗概对照
- java.lang.Thread API文档中西文梗概对照
- java-day05-Thread-基础知识以及运用API第一种方法使用Thread类
- API解读:Thread
- Win32 Thread API学习
- API解读:Thread
- process VS thread API
- POSIX thread API
- 读解Thread类API
- thread api整理
- SDL Thread 相关API
- 在ncverilog仿真条件设置中+nospecify ,+notimingcheck 和 +delay_mode_zero之间有什么区别
- ScrollView加载里面的数据出现下滑(可能是焦点问题)
- 二叉查找树迭代器
- 宣传一下自己的私人博客
- 多线程学习(一)
- Java Thread API
- Django框架学习笔记(22.CSRF原理简单介绍)
- 剑指Offer(三)从尾到头打印链表
- 51nod 1416 两点 -dfs
- 七牛云简单上传图片 展示
- vue入门
- 二分答案0.1
- linux三个特殊权限setuid.setgid和stick bit使用详解
- MyBatis的Mapper接口动态代理