线程相关
来源:互联网 发布:mac发布会时间 编辑:程序博客网 时间:2024/04/19 10:03
线程相关
1、多线程一定运行速度快吗?
a、不一定,多线程很多资源耗费在线程的上下文切换上,可以通过 jstack 查看空闲的线程数(waiting状态)。
b、上下文切换:CPU为每个任务分配一个时间片,在某个时间片执行某个任务,切换到下一个任务时,需要记录上一个任务的状态信息,使的下次继续执行时可以加载任务的信息。任务状态从保存到加载就是一个上下文切换
2、多线程通信方式:公共内存,消息传递
公共内存块
一个线程将数据同步到公共内存中,另外的线程再从公共内存中取数据,从而达到数据同步
消息传递
直接通过线程间传递消息,常用方法:
Thread.wait()
当前线程等待,进入等待队列,并释放锁
Thread.notify()
唤醒等待在该锁上的一个线程,使其进入同步队列;必须等当前队列释放锁后,等待的线程获得锁后,等待的线程才能继续work
Thread.notifyAll()
唤醒等待在该锁上的所有线程,使其进入同步队列;唤醒所有等待线程,但是只有一个线程能拿到锁;必须等当前队列释放锁后,等待的线程获得锁后,等待的线程才能继续work
如:
Object lock = new Object();Thread1 { Synchronized(lock) { // wait 后释放锁,等待唤醒处理 lock.wait(); // 被 Thread2 唤醒后,获取到锁,继续work do something1. }}
Thread2 { Synchronized(lock) { // 唤醒 lock 上等待的线程 lock.notify(); do something2. } // 处理完后,释放锁,Thread1才有机会获取到锁}
3、线程常用方法
Thread.start()
启动线程
Thread.run()
线程运行方法,该方法结束后,线程结束
Thread.interrupted()
中断线程,如果线程处于work状态可中断,如果处于sleep状态,则不可中断(中断不起作用,待定)?
Thread.join()
等待线程执行完毕
Thread.suspend()
已废弃,暂停线程
Thread.resume()
已废弃,恢复线程
Thread.stop()
已废弃,停止线程;停止线程可以采用标志位的方式来处理
0 0
- 线程相关
- 线程相关
- 线程相关
- 线程相关
- 线程相关
- 线程相关。
- 线程相关
- 线程相关
- 线程相关
- 线程相关
- 线程相关
- 线程相关
- 线程相关
- 线程相关
- Android线程,线程池相关
- CSDN线程池相关
- 线程的相关概念
- 创建远线程相关
- Java 位运算
- Ajax+JSP+JSON的实例
- 一些有用的网站
- Android设计模式之 MVP和泛型结合
- 用Dockerfile构建java web环境
- 线程相关
- 电视剧里的小角色以及我生活里的那些人001
- TextView 下划线
- c语言
- 《JavaScript高级程序设计》读书笔记--6-面向对象的程序设计
- 计算该日是本年的第几天
- 哈佛大学公开课《死亡》
- windows系统命令
- CUDA:异步并发执行的概念