黑马程序员技术交流社区
标题: 分享一下多线程的学习总结 [打印本页]
作者: 乖睡觉咯 时间: 2013-8-24 17:46
标题: 分享一下多线程的学习总结
多线程总结 定义: 线程就是运行不同功能代码的执行路劲,控制单元,每一个引应用程序至少有一个活的线程
创建线程的方式有两种:
1.继承Thread类,覆盖run方法。建立子类对象,调用start();
2.实现Runnable接口,实现run方法,建立Thread对象,调用start方法。
问题的引发,多个线程操作同一个数据的时候引发的安全问题。为保证数据的准确性,使用同步技术Synchronized。
同步代码: 当一个线程去操作数据的时候,如果没有操作完毕。其余的线程无法操作。去操作数据的线程必须要拿到对象锁,没有拿到的线程,处于零时阻塞的状态。(对象锁最好实用字节码文件,因为字节码文件只有一份)
死锁: 同步中嵌套同步。多个线程抢用一把锁。
线程的状态: 被创建、运行、冻结、临时阻塞、消亡。
Sleep和wait的区别:
Sleep() 线程休眠,但是不释放锁。其他线程获取不到锁
Wait() 线程等待,但是释放锁,可以由其他程序来执行,等待唤醒后,还要重新获取锁,才能执行。
生产者与消费者:
Notify 唤醒单个线程 notifyAll 唤醒多个线程
JDK1.5新特性:
使用步骤:
1 通过Lock接口的实现类对象,获取ReentrantLock子类对象。
2 通过创建newCondition对象。可以创建多个。
3 获取锁 Lock.lock方法 。
4 使用await方法。
5 唤醒线程。Condition.signal();
6 释放锁 Lock.unlock();(必须要释放)
其他的方法:
1 Interrupt() 停止线程的方法。引发异常停止
2 setDaemon(true) 守护线程
3 join() 等待线程终止
4 static 一led() 线程的让步
作者: 好好先生 时间: 2013-8-24 23:19
总结的不错!又帮我顺了一遍!要是我自己想的话肯定写不全。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |