Java多线程
2017-11-14 本文已影响0人
方研梅
进程是程序(任务)的执行过程(具有动态性,必须在动态执行时才能被称为进程,对于静态存储的程序不能说是进程);
进程特点:持有资源(共享内存,共享文件)和线程;故而进程是资源和线程的载体
线程是系统中最小的执行单元,同一进程中有多个线程,线程共享进程的资源;
要点:
1、Java对线程的支持
thread类,rannable接口
2、线程的创建和启动
3、线程常用的方法
4、如何正确停止线程
如何正确地停止Java中的线程
已经不再使用stop()方法来停止线程;因为该方法会导致线程戛然而止,不知道线程完成了什么,不知道那些工作还没有做,无法进行一些清理工作;
应该使用退出标志,当线程退出标志显示线程要退出时,会为程序执行后续的应该完成的操作,使得一个完成的业务步骤能够完整地执行完毕;在执行完整的业务步骤之后可以有足够的时间进行代码清理工作;从而保证了代码的安全性;
其中,interrupt方法不能用来停止线程,该方法的初衷仅仅是中断程序,而不是停止程序;
~~线程之间的争用
~~线程的交互——互斥与同步
<1>线程互斥:在同一时间只能有一条线程对关键数据或者临界区进行操作;
<2>线程同步:线程之间的一种通信机制;某一个线程做了一件事,它会以某种形式告知其他的线程它已做完这件事;
互斥的实现:增加一个锁对象;synchronized(intrinsic lock)关键字或者代码块;
同步的实现:wait()/notify()/notifyAll(),这三个方法均为object对象的成员函数,而不是线程thread对象的函数;调用wait()方法的线程和调用notifyAll()方法的线程不是同一个线程的同一次操作中执行的,是两个不同的线程,分别调用;
如何理解同步:WaitSet(可理解为线程休息室)
总结: