美文网首页
java基础回忆录 - Thread

java基础回忆录 - Thread

作者: watayouxiang | 来源:发表于2017-09-24 11:43 被阅读3次

1. 线程的五种状态

  • 运行:cpu正在执行(正在执行)
  • 阻塞:具备运行资格,但没有执行权(排队等待执行)
  • 睡眠:sleep(time); 时间到了才会醒(时间到进入排队等待队列)
  • 等待(等待/冻结/中断):wait(); notify();了才会醒(notify() 后进入排队等待队列)
  • 消亡: 线程被销毁

2. 线程的方法

  • 线程的名字
    • thread_a.getName();
    • new Thread(name);
  • 获取当前线程对象
    • thread_a.currentThread();
  • 强制让线程恢复到运行状态
    • thread_a.interrupt();
  • 设置守护线程
    • thread_a.setDaemon(boolean on);
    • thread_a被设置成守护线程时,当主线程结束后,thread_a会自动结束
  • 抢夺cpu执行权
    • thread_a.join();
    • thread_a抢夺cpu执行权,只有当thread_a执行完后才会让出cpu执行权给其他线程
  • 让出cpu执行权
    • Thread.yield();
    • Thread的静态方法
    • 暂停当前正在执行的线程,并执行其他线程
  • 打印该线程信息
    • thread_a.toString();
    • 打印的线程信息包含:线程名称、线程优先级,线程所属的线程组
    • 线程组:在thread_a中开启thread_b,那么thread_b所属的线程组就是thread_a
    • 线程优先级:线程的默认优先级是5
  • 设置线程优先级
    • thread_a.setPriority(int newPriority);
    • newPriority取值范围是1~10,默认是5,10优先级最高,1优先级最低
    • Thread.MAX_PRIORITY = 10
    • Thread.MIN_PRIORITY = 1
    • Thread.NORM_PRIORITY = 5

3. 如何停止线程

  • 方式一:标记位方式结束线程

线程通常是循环结构,只要通过标记位控制循环,就可以让run方法结束,也就是线程停止

  • 方式二:interrupt()方法强制让线程恢复到运行状态

但是如果线程处于等待状态 lock.wait(),那么记位停止线程的方式就会失效

Thread.interrupt(); 让冻结状态的线程强制恢复到运行状态

  • 方式三:设置成守护线程

Thread.setDaemon(true); 设置成守护线程

守护线程和一般的后台区别:当主线程结束后,守护线程会自动结束

相关文章

  • java基础回忆录 - Thread

    1. 线程的五种状态 运行:cpu正在执行(正在执行) 阻塞:具备运行资格,但没有执行权(排队等待执行) 睡眠:s...

  • Thread类详解以及创建线程的四种方法

    1.Thread 类详解 Thread类是Java语言中重要的基础类,位于java.lang包中。Thread类有...

  • Java基础-Thread

    @see https://juejin.im/entry/57339fe82e958a0066bf284f htt...

  • Java线程

    Java线程基础 线程状态 在Thread.java类文件中,有一个state静态枚举内部类,预定义了Thread...

  • java基础之Thread

    线程 定义线程是程序执行的一条路径,一个进程中可以包含多条线程 优点多线程并发执行可以提高程序的效率, 可以同时完...

  • Java基础-停止Thread

    API 停止线程的方法 这三个方法都是Thread自带停止或者销毁的方法,不过都被废弃掉了。 为什么会被废弃呢? ...

  • Java常用包和第三方jar包

    一、Java常用包 java.lang--语言包:Java语言的基础类,包括Object类、Thread类、Str...

  • Thread基础

    记录Java Thread的基础点。 线程的实现 线程的定义有两种方式 继承Thread类 实现Runnable接...

  • JAVA技术知识体系

    java基础 java虚拟机 集合框架 网络编程-Socket 并发编程-Thread io 数据库操作-JDBC...

  • Java基础-jdk中常用的包

    java.lang: 这个是系统的基础类,比如String、Math、Integer、System和Thread,...

网友评论

      本文标题:java基础回忆录 - Thread

      本文链接:https://www.haomeiwen.com/subject/kqdkextx.html