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不会