java学习阶段一 工具类(线程)
介绍
一个操作系统可以包含多进程
一个进程可以包含多线程
多线程:不同的子程序轮流执行
基本知识
-
线程的创建
所有线性类都需要实现Runnable接口(只有一个run方法) 而Thread类也实现类此接口 相当于完整的线程类的模板
//第一种 继承Thread类的方式创建线程类 //Thread构造方法 Thread()//空构造方法 Thread(String name)// 创建线程名称 Thread(Runnable target)//创建基于Runnable接口实现类的线程对象 Thread(Runnable target,String name)//以上两种 //Thread常用方法 public void run()//线程相关代码 public void start()//启动线程方法 public static void sleep(long m)//线程休眠m毫秒的方法 public void join()//优先执行调用join方法的线程 //第二种 实现Runnable接口 1创建接口实现类的对象 2 创建Thread类的对象并传入接口实现类对象作为构造方法的参数 3 Thread对象调用start方法 Thread.currentThread().getName()//调用线程类的一个静态方法表示当前线程再调用getname表示获取当前线程名
-
线程状态
-
新建 创建线程类对象后
-
可运行 线程调用start方法后
-
正在运行 获取cpu使用权到时间用完 转回到可运行/yield()
-
阻塞状态 暂停状态 阻塞状态下只能先转到可运行状态
-
终止状态 停止
-
sleep方法 使用场景 定期刷新数据
public static void sleep(long millis)//休眠指定时间 单位毫秒
-
join方法 使用场景
线程类下的对象调用join 使得该线程强制先执行 其他的线程则进入阻塞状态
join有两个方法 一个无参 一个有参为long millis 限制该线程优先执行的最长时间
-
-
线程优先级
10个优先级 1-10的整数 数字越大优先级越高
主线程默认为5
其中也可以用优先级常量设置
Thread类下优先级常量
MAX_PRIORITY 10 MIN_PRIORITY 1 NORM_PRIORITY 默认5
获取和设置
public int getPriority() //获取 public void setPriority(int newPriority)//设置优先级
-
同步
//synchronized 同步关键字 可以用在成员方法 静态方法 语句块 //在执行完此关键字下的代码中不允许被打断
-
线程间通信与死锁
//死锁为所有线程都处于等待状态 wait()//中断方法的执行 使线程等待 notify()//唤醒处于等待的某一个线程,使其结束等待 notfyAll()//唤醒所有处于等待的线程 使它们等待结束
注意事项
1 线程只能启动一次
2 主方法本身为一个线程
3 允许过程随机
4 run方法可以被多个线程使用
5 优先级不能完全保证先执行