线程
来源:互联网 发布:淘宝买家最多买多少 编辑:程序博客网 时间:2024/06/16 20:51
线程是一个程序里面不同的执行路径.
一个CPU在同一时间里只能执行一个线程。
创建线程有两个方法:
1
创建一个新的线程,通过创建Thead的实例来创建新的线程.*可以定义一个Thread的子类并重写其run方法如:
class MyThread extenfd Thead{
public void run(){…}
}
*然后生成该类的对象:
MyThread myThread = new MyThead(…)
2
通过实现runnable接口来实现.*定义线程类实现Runnable接口
*Thread myThread = new Thead(target) //target为Runnable接口类型.
*Runnable中只有一个方法:
public void run(); 用以定义线程运行体.
*使用Runnable接口的类的run方法定义中可以使用Thread的静态方法;
public static Thread currentThread() 获取当前线程的引用.
启动线程的两个方法:
1 通过调用Thead类的start()方法来启动一个新的线程.(线程启动)
2 直接调用run方法(方法调用)
线程状态转换:
Sleep join yield方法:
Thread.sleep()将当前线程睡眠制定毫秒数(是一个静态方法)
sleep会抛出InterruptedException异常
join()调用某线程的该方法,将当前线程与该线程"合并",即等待该线程结束,再恢复当前线程的运行.(相当于run的方法调用)
yield()让出CPU,当前线程进入就绪队列等待调度.
线程的优先级
getPriotity()获得线程的优先级数值
setPriority()设置线程的优先级数值
优先级越高得到CPU执行的时间片越多
currentThread()拿到当前线程
线程同步:
Synchronized(this)锁定当前对象:在执行语句过程之中,不会被另外一个线程打断。
死锁:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程
给当前对象加锁:非加锁的方法还可以自由的访问,加锁的只是说另外一个线程不可能再访问加锁方法里面的东西。
互斥:某一个时间段,保证只有一个线程进入到方法体里面。不保证其他的线程是不是能够进到另外一个方法里面。
Stop:停止执行该线程,丢失锁,而且无法再次执行
Notify:叫醒一个stop、,使该线程可以继续执行。
Wait 和sleep的区别:
Wait是Object的方法,sleep是thread的方法
Wait停止执行该线程,丢失锁,而且无法再次执行
Sleep:停止执行该线程,不丢失锁,不用notify也可再次执行。
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- java String类 StringBuilder和StringBuffer类的区别
- WebView中调用assets下的js脚本无法正常执行的解决方法
- java学习笔记
- Windows下使用swoole的环境搭建
- UNIX 对文件大小的操作
- 线程
- more effective c++之Item M3:不要对数组使用多态
- 模仿动态增加或者删除cell并自动增加变化高度
- JavaSE_JDBC编程
- webApp滚动选择器-实践与应用
- 关于Unity代码控制音频播放的问题
- 使用Ping++完成H5页面支付功能
- xcode远程编译打包签名问题
- 锋利的Jquery——学习笔记(五)DOM操作(二)