-
一、线程的特点:
进程是资源分配的最小单位,一个进程中有1—n个线程,线程共享资源,同一时刻只能有一个线程占领CPU
二、多线程:之间争用资源,多线程之间同步与互斥
1,多线程之间的互斥(加锁实现):同一时间,只能有一个线程访问临界区(防止线程之间争用条件造成的“能量损失”)[对该临界资源进行加锁,表示现在只能由该线程进行访问]
2,多线程之间的同步(线程的等待和唤醒:wait()+notifyAll()):通信机制;一个线程完成,以某种方式通知其他线程可以访问临界区
3,锁:private final Object lockObj=new Object();
三、重要的话
线程之间的互斥:通过加锁实现:线程访问临界区的代码放在一个代码块中,加锁实现
线程之间的同步:通过wait()+notify()的通信机制来实现
wait()和notifyAll()是在线程同步的时候使用的一对方法查看全部 -
Java线程——线程交互——争用条件
1、当多个线程同时共享访问同一数据(内存区域)时,每个线程都尝试操作该数据,从而导致数据被破坏(corrupted),这种现象称为争用条件
2、原因是,每个线程在操作数据时,会先将数据初值读【取到自己获得的内存中】,然后在内存中进行运算后,重新赋值到数据。
3、争用条件:线程1在还【未重新将值赋回去时】,线程1阻塞,线程2开始访问
查看全部 -
调用interrupt()方法,立刻改变的是中断状态,但如果不是在阻塞态,就不会抛出异常;如果在进入阻塞态后,中断状态为已中断,就会立刻抛出异常。interrupted属性值会被clear。
当线程调用sleep(),join()等方法在阻塞状态下,又被别的线程调用的interrupt()方法,则会抛出interruption异常,并且interrupted属性值会被clear。
查看全部 -
stop方法使得线程戛然而止,完成了什么工作,哪些工作还没有做,都不知道,且清理工作也没有做,所以不是正确的停止线程方法
正确的停止线程方法是,在线程执行中设置状态标识,通过控制标识来控制线程正常完整的执行结束线程
volatile是保证所有子线程里的变量都能同步到主内存里变量的值
不要用stop()方法结束线程查看全部 -
yield()让出当前线程的执行权限,随机选择线程执行。
join()优先执行该线程,其他线程都暂停。使同级其他线程停下来,等待调用join方法的对象完成线程后,再进行其他线程。查看全部 -
volatile保证了线程可以正确的读取其他线程写入的值
查看全部 -
Thread常用方法
查看全部 -
进程是程序(任务)的执行过程
持有资源(共享内存与文件)和线程
线程是系统中最小的执行单元
同一进程中有多个线程
线程共享进程的资源
线程的交互:互斥与同步
查看全部 -
Thread 常用方法
查看全部 -
线程的互斥
private final Object lockObj=new Object();
synchronized(lockObj){
核心代码
}
同步的实现:wait()/notify()/notifyAll()
查看全部 -
争用条件
当多个线程同时共享访问同一数据(内存区域)时,每个线程都尝试操作该数据,从而导致数据被破坏(corrupted),这种现象称为征用条件。
查看全部 -
当有休眠进程时,调用Interrupted方法将使Thread.isInterrupted方法无效。
查看全部 -
线程.stop()方法不是一个停止线程合适的方法
查看全部 -
volatile boolean keepRunning
volatile保证了线程可以正确的读取其他线程写入的值
查看全部
举报