输出结果:
关注公众号:一灯架构
使用线程池创建线程是工作开发中最常用的方式 , 优点是:
- 线程池帮忙管理对象的创建与销毁 , 减轻开发者工作量
- 线程池帮忙管理任务的调用 , 资源的创建与分配
- 复用线程和对象 , 提高使用效率
- NEW(初始化)
表示创建线程对象之后 , 还没有调用start方法 。
- RUNNABLE(可运行)
表示调用start方法之后 , 等待CPU调度 。为了便于理解 , 通常又把RUNNABLE分别RUNNING(运行中)和READY(就绪) 。处在RUNNING(运行中)状态的线程可以调用yield方法 , 让出CPU时间片 , 然后跟其他处于READY(就绪)一起等待被调度 。
- WAITING(等待)
处于RUNNABLE状态的线程调用wait方法之后 , 就处于等待状态 , 需要其他线程显示地唤醒 。
- TIMED_WAITING(超时等待)
处于RUNNABLE状态的线程调用wait(long)方法之后 , 就处于等待状态 , 需要其他线程显示地唤醒 。
- BLOCKED(阻塞)
等待进入synchronized方法/代码块 , 处于阻塞状态 。
- TERMINATED(终止)
表示线程已经执行结束 。
文章插图
4. 线程常用方法说一下线程有哪些常用的方法 。
方法定义含义使用方式public synchronized void start() {……}启动线程MyThread myThread = new MyThread(); myThread.start();public static native Thread currentThread();获取当前线程实例对象Thread thread = Thread.currentThread();public static native void yield();让出CPU时间片Thread.yield();public static native void sleep(long millis);睡眠指定时间Thread.sleep(1L);public void interrupt() {……}中断线程MyThread myThread = new MyThread();myThread.interrupt();public static boolean interrupted() {……}判断线程是否已中断MyThread myThread = new MyThread(); boolean interrupted = myThread.isInterrupted();public final native boolean isAlive();判断线程是否是存活状态MyThread myThread = new MyThread(); boolean alive = myThread.isAlive();public final String getName() {……}获取线程名称MyThread myThread = new MyThread(); String name = myThread.getName();public State getState() {……}获取线程状态MyThread myThread = new MyThread(); Thread.State state = myThread.getState();public long getId() {……}获取线程IDMyThread myThread = new MyThread(); long id = myThread.getId();public final void join() {……}等待其他线程执行完再执行MyThread myThread = new MyThread();myThread.join();
我是「一灯架构」 , 如果本文对你有帮助 , 欢迎各位小伙伴点赞、评论和关注 , 感谢各位老铁 , 我们下期见
文章插图
经验总结扩展阅读
- CSS基础知识筑基
- 四 Java多线程-ThreadPool线程池-2
- 生成器函数 javascript异步编程之generator与asnyc/await语法糖
- Java Timer使用介绍
- 三 Java多线程-ThreadPool线程池
- 云小课|MRS基础原理之MapReduce介绍
- 二 Java多线程-线程关键字
- 二 Java 编码那些事
- 一 Java多线程-线程生命周期
- 没基础怎么练一字马