线程解析

来源:互联网 发布:程序员工资真的很高吗 编辑:程序博客网 时间:2024/05/16 00:33

线程是一个程序内部的顺序控制流,即程序中的一条执行路径
多线程:当一个程序中有多条执行路径并发执行时,就是多线程
实现线程:在java中通过java.lang.Thread类来实现
查看当前运行的线程:Thread.currentThread()
一、Thread类:
Thread类是java.lang包中一个专门用来创建线程和对线程进行操作的类。
二、Thread类中的方法:
①构造方法:用来创建用户的线程对象
②run():每个线程都通过某个特定对象的run()方法来完成基本操作,run方法被称为线程体
③改变线程状态的方法:start()、sleep()、stop()……
三、线程的生命周期:
①新建状态:
Thread t=new MyThread();创建一个线程类的对象,产生新线程进入创建状态。这产生的是一个空的线程对象,run()方法还没有执行
②就绪状态(可执行状态)
当一个线程调用了start()方法后便进入可执行状态
t.start()产生所需系统资源安排运行并调用run方法
③执行状态:
当处于可执行状态的线程被调用并获得CPU等执行所需的资源时,便进入执行状态即运行了run方法
④阻塞状态:不可执行状态
出现阻塞状态的可能是调用了sleep方法/调用了wait方法(调用notify()和notifyAll()方法停止等待)/调用suspend方法(调用resume方法恢复执行)/输入输出了中发生阻塞
⑤死亡状态:终止状态或停止状态
stop()/destory()来终止线程
四、实现线程体:
①继承Thread类,这种方式不能继承其他的类,可直接操作线程
继承Thread类并重写其中的run()方法
②实现Runnable接口  此方法可继承其他的类
类Thread本身也实现了Runnable接口


五、为保证线程对共享资源操作的完整性,用关键字Synchronized为共享资源加锁来解决,保证任一时刻只有一个线程访问该对象
除了这种方式还可以把程序中的语句或代码段指定为Synchronized,在方法里Synchronized(Object)后边的括号中的表达式指定了同步作用的对象。
注意:一旦进入指定对象同步代码块,就不能进入在同一对象上同步的其他代码块或方法。


同步是多线程间对共享资源使用的协调