多线程

来源:互联网 发布:千锋python视频教程 编辑:程序博客网 时间:2024/06/11 21:03
1).掌握程序、进程、线程与多线程的概念和关系
2).掌握Java实现多线程的两种方式
3).掌握线程的状态和生命周期
4).掌握线程的优先级
5).掌握线程的互斥
6).掌握线程的同步

7).了解线程的死锁


1、进程、线程和多线程的概念
程序是一段静态的代码。
进程指 正在运行的应用程序。
线程是在进程中的一条执行路径。
多线程是  在进程中有多条执行路径。
2、进程和线程的关系
进程是由线程组成的,进程包含线程,每个进程都有它自己的内存空间,多个进程之间互不干扰,进程中的所有线程共享一块内存地址。
示例:
进程并发
线程并发

3、多线程的实现方式
JAVA中实现多线程应用有两种途径:
(1)继承Thread类
(2)实现Runnable接口
4、native是线程中使用的关键字。
作用:调用底层c语言代码
5、线程的生命周期
①新建状态
②就绪状态:通过调用start()方法启动处于新建状态的线程对象 
③运行状态:处于就绪状态的线程被调度并获得CPU资源后即进入运行状态
④阻塞状态:一个正在执行的线程如果在某些特殊情况下,
                         如被人为阻塞(挂起)或CPU时间片耗尽。
sleep(),wait()是两个常用引起阻塞的方法。
⑤终止(死亡)状态:线程完成全部工作后会正常结束运行
                                                (run()中最后一条语句执行完毕),
或线程被强制性的终止
(Thread.stop()[该方法已过时])。
新建状态--》就绪状态--》运行状态--》终止状态
||
||
《--阻塞状态

补充:
sleep()和wait()有什么区别?
1).sleep()在Thread类中的方法,wait()是Object类中的方法
2).sleep()不需要唤醒,wait()需要调用notify或notifyAll方法唤醒
6、线程的优先级:
MAX_PRIORITY:最大优先权,值为10;
MIN_PRIORITY:最小优先权,值为1;
NORM _PRIORITY:默认优先权,值为5;
isAlive():判断线程是否处于运行状态
join():线程的强行运行
Thread.yield():当前线程放弃执行,是其他优先级高于此线程的线程有机会运行,它是一个静态方法。(线程的礼让)
7、线程的互斥
1)、Synchronized关键字有什么作用?
答:在某个方法在多线程环境下时,有可能会导致线程不安全,
synchronized可以保证线程安全,保证在任一时刻只能有一个线
程在访问共享资源(线程的互斥)
2)、如何用synchronized来让线程互斥?
synchronized可修是一个代码块或一个方法,使修饰对象的共享资源在同一时刻只能有一个方法访问
1、给代码块加上锁
synchronized(this)
2、在方法返回类型前面加上锁
synchronized methodName(参数){}
这个锁叫做对象锁或互斥锁

8、线程同步与互斥机制总结
(1)线程访问互斥资源时,必须先得对象锁。
(2)实现线程同步需要在这些线程之间相互通信。
            Java提供了方法wait和notify或notifyAll等来使线程之间相互交谈。
9、什么是死锁?
死锁是指两个或多个线程无休止地互相等待对方释放所占据资源的过程。
错误的同步往往会引起死锁。
HashMap和Hashtable的区别?
线程:
List和Vector的区别?
StringBuffer和StringBuilder的区别?
Servlet和Action的区别?
PreparedStatement和Statement的区别?

线程并发