Java线程与并发
Java 主要是通过Thread类以及Runnable接口实现线程机制的。Thread类:为底层操作系统的线程体系架构提供一套统一的接口。Runnable接口为关联Thead对象的线程提供执行代码。两种方式创建Runnable对象:
1.实现Runnable接口的匿名类
Runnable r =new Runnable(){
@override
public void run()
{
system.out.println("Hello from Thread");
}
};
2.Java 8 引用lambda更快捷创建runnable
Runnable r = ( )->System.out.println("Hello from Thread");
获取线程和设置线程状态
获取和设置线程的名称
默认前缀:Thread—
1.String getName() setName中设置
2.Thread(Runnable r,String name)
获取一条线程的存活状态
boolean isAlive()
![](https://i-blog.csdnimg.cn/blog_migrate/536cd3655510b3bd14e40eadab62a1fd.png)
- NEW :该状态下线程还没有开始执行
- RUNNABLE:该状态下线程正在JVM中执行
- BLOCKED:该状态下线程被阻塞并等待一个监听锁
- WAITING:该状态下无限期地等待另一条线程执行特定的操作
- WTIMED_WAITING:该状态下在特定的时间内等待另外一条线程执行某种操作
- REIMINATED:该状态下线程已经退出
线程的5个状态获取和设置线程的优先级
- 线程名称
- 线程存活的标识
- 线程的执行状态
- 线程的优先级
- 线程是否为守护线程
Runtime类的int availableProcessors()方法,来确定JVM上可用的处理器或处理器核心的数量。int getPriority():返回当前优先级void setPriority() :设置优先级
启动线程
调用void start()方法启动与该对象关联的线程。如果线程之前已经启动且处于运行状态,或者线程已经死亡,这个方法会抛出java.lang.IllegalThreadStateException当调用strat()方法,同时会调用run()方法
中断线程
void interrupt()方法
等待线程
Thread提供了3中join()方法
1.void join()就是无限期等待直至线程死亡
2.void join(long millis)该线程死亡前最多等待millis毫秒
3.void join(long millis int nanos)该线程死亡前最多等待millis毫秒加nanos纳秒
睡眠线程
Thread类声明了一堆静态方法致使线程睡眠。暂时性地执行
void sleep(long millis) 睡眠millis毫秒数
void sleep(long millis int nanos) 睡眠millis毫秒数
join()和sleep()一个是等待,一个是睡眠是不同的概念,还有人会不明白wait()方法的使用,wait()其实是使线程进入等待状态,等待调用runnable 而sleep()是让线程暂时停止执行。
版权声明:本文为博主原创文章,未经博主允许不得转载。https://mp.csdn.net/postedit/80963060