java多线程编程核心技术
来源:互联网 发布:ubuntu软件包管理器 编辑:程序博客网 时间:2024/06/04 19:25
1.停止线程的方法
1.抛异常
1.运用return
2.暂停线程与恢复
1.Thread.suspend
2.Thread.consume
3.暂时让出资源
yield 让相同优先级的线程之间能适当的轮转执行。但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。
4.释放资源并等待
wait
5.休眠
sleep
6.线程的优先级
线程的优先级具体可继承性 A线程启动B线程,B线程的优先及与A一致
优先级高并不一定先执行,只是先执行的概率比较大
7.守护纯程
就像保姆一样,当非守护线程结束,守护线程结束
8.synchronized(特别:互斥性,可见性)
1.锁的是对象而不是代码
2.同一对象不同同步方法同步执行
3.抛出异常,释放锁
4.锁可以重入
5.同步不具有继承性,所以在子方法中也需要加入同步
9.volatile
主要的作用是变量在多个线程间可见
volatile的作用是强制从公共堆栈中取得变量的值,而不是从线程私有数据栈中取得变量的值
最致命的缺点:不支持原子性
10.wait
使当前执行代码的线程进行等待,需要获取锁的前提下,必需加同步锁synchronized
11.notify
使停止的线程继续运行(随机挑一个),并不是马上释放锁,等同步代码块里的逻辑执行完方可
12.notifyAll
使所有等待该资源的线程都处于就续状态,notifyAll()可以避免唤醒消费者生产者中的同类而处于假死状态,notify()可能又唤醒了生产者,生产者又需要等待消费者消费
13.join
等待该线程执行完再执行其他线程
14.ThreadLocal
使每个线程都绑定自己的值,每一个线程都有自己的共享变量
15.ReentrantLock
相当于sysnchronzied功能
16.Condition
RenntrantLock与condition结合可以实现选择性通知,比notifyAll/notify随机有选择权
lock=new ReentrantLock();
Condition condition=lock.newCondition();
lock.lock();
doSomething();
condition.await();//condition.signal();
lock.unlock();
17.公平锁(先到先得)与非公平锁(随机)
18.tryLock
仅在调用时锁定未被另一个线程保持的情况下才获取该锁定
19.schedule和secheduleAtFixedRate特性
schedule和secheduleAtFixedRate都是在上次任务执行完执行,如果上次任务延时也是这样,但sechecduleAtFixeRate会执行已经过了执行期的任务,schedule不会
1.抛异常
1.运用return
2.暂停线程与恢复
1.Thread.suspend
2.Thread.consume
3.暂时让出资源
yield 让相同优先级的线程之间能适当的轮转执行。但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。
4.释放资源并等待
wait
5.休眠
sleep
6.线程的优先级
线程的优先级具体可继承性 A线程启动B线程,B线程的优先及与A一致
优先级高并不一定先执行,只是先执行的概率比较大
7.守护纯程
就像保姆一样,当非守护线程结束,守护线程结束
8.synchronized(特别:互斥性,可见性)
1.锁的是对象而不是代码
2.同一对象不同同步方法同步执行
3.抛出异常,释放锁
4.锁可以重入
5.同步不具有继承性,所以在子方法中也需要加入同步
9.volatile
主要的作用是变量在多个线程间可见
volatile的作用是强制从公共堆栈中取得变量的值,而不是从线程私有数据栈中取得变量的值
最致命的缺点:不支持原子性
10.wait
使当前执行代码的线程进行等待,需要获取锁的前提下,必需加同步锁synchronized
11.notify
使停止的线程继续运行(随机挑一个),并不是马上释放锁,等同步代码块里的逻辑执行完方可
12.notifyAll
使所有等待该资源的线程都处于就续状态,notifyAll()可以避免唤醒消费者生产者中的同类而处于假死状态,notify()可能又唤醒了生产者,生产者又需要等待消费者消费
13.join
等待该线程执行完再执行其他线程
14.ThreadLocal
使每个线程都绑定自己的值,每一个线程都有自己的共享变量
15.ReentrantLock
相当于sysnchronzied功能
16.Condition
RenntrantLock与condition结合可以实现选择性通知,比notifyAll/notify随机有选择权
lock=new ReentrantLock();
Condition condition=lock.newCondition();
lock.lock();
doSomething();
condition.await();//condition.signal();
lock.unlock();
17.公平锁(先到先得)与非公平锁(随机)
18.tryLock
仅在调用时锁定未被另一个线程保持的情况下才获取该锁定
19.schedule和secheduleAtFixedRate特性
schedule和secheduleAtFixedRate都是在上次任务执行完执行,如果上次任务延时也是这样,但sechecduleAtFixeRate会执行已经过了执行期的任务,schedule不会
阅读全文
0 0
- java多线程编程核心技术
- 《Java多线程编程核心技术》
- Java 多线程编程核心技术
- [Java多线程编程核心技术]
- 《java多线程编程核心技术》
- java多线程编程核心技术
- Java多线程编程核心技术
- java多线程编程核心技术
- Java多线程编程核心技术
- 《Java多线程编程核心技术》推荐
- Java多线程编程核心技术笔记
- Java多线程编程核心技术--定时器
- 《Java多线程编程核心技术》笔记
- Java 多线程编程核心技术--第一章
- 《Java多线程编程核心技术》读后感
- 《Java多线程编程核心技术》-笔记
- Java多线程编程核心技术---Java多线程技能
- 《java多线程编程核心技术》之并发访问
- Ajax JSON简介
- 南邮CTF-md5 collision
- Junit单元测试入门与整理
- JVM内存模型
- 《更好更轻松地清理C盘》
- java多线程编程核心技术
- Android SDK目录结构介绍
- mysql安装步骤及遇到的MySQL 服务无法启动。 服务没有报告任何错误。 请键入 NET HELPMSG 3534 以获得更多的帮助。
- 去除List集合中的重复值的方法
- web.xml中Filter,Listener,Servlet的区别
- iOS一些小知识点
- AI机器学习(三)神经网络在图片上的应用(C#)
- 关于滑动事件冲突的解决方法
- 爬虫爬取微信公众号