夯实Java基础,一篇文章全解析线程问题( 二 )

输出结果:
关注公众号:一灯架构使用线程池创建线程是工作开发中最常用的方式 , 优点是:

  1. 线程池帮忙管理对象的创建与销毁 , 减轻开发者工作量
  2. 线程池帮忙管理任务的调用 , 资源的创建与分配
  3. 复用线程和对象 , 提高使用效率
3. 线程的状态线程共有6种状态 , 分别是NEW(初始化)、RUNNABLE(可运行)、WAITING(等待)、TIMED_WAITING(超时等待)、BLOCKED(阻塞)、TERMINATED(终止) 。
  • NEW(初始化)
    表示创建线程对象之后 , 还没有调用start方法 。
  • RUNNABLE(可运行)
    表示调用start方法之后 , 等待CPU调度 。为了便于理解 , 通常又把RUNNABLE分别RUNNING(运行中)和READY(就绪) 。处在RUNNING(运行中)状态的线程可以调用yield方法 , 让出CPU时间片 , 然后跟其他处于READY(就绪)一起等待被调度 。
  • WAITING(等待)
    处于RUNNABLE状态的线程调用wait方法之后 , 就处于等待状态 , 需要其他线程显示地唤醒 。
  • TIMED_WAITING(超时等待)
    处于RUNNABLE状态的线程调用wait(long)方法之后 , 就处于等待状态 , 需要其他线程显示地唤醒 。
  • BLOCKED(阻塞)
    等待进入synchronized方法/代码块 , 处于阻塞状态 。
  • TERMINATED(终止)
    表示线程已经执行结束 。

夯实Java基础,一篇文章全解析线程问题

文章插图
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();
我是「一灯架构」 , 如果本文对你有帮助 , 欢迎各位小伙伴点赞、评论和关注 , 感谢各位老铁 , 我们下期见

夯实Java基础,一篇文章全解析线程问题

文章插图

经验总结扩展阅读