• 多线程详解1:创建线程 线程状态 线程中的常用方法


    多线程的作用就是开辟了多条路径。

    一个线程就是独立的执行路径
    线程的运行由调度器来安排调度 调度器与操作系统紧密相关
    线程会带来额外的开销 

    创建线程的三种方式

    1.extends Thread

    2.implements Runnable 

       重写run方法(必须try catch)

      new Thread(new 对象).start();  //不保证立即运行  由CPU调度

    3.实现Callable 借口 有返回值(不常用)

    call  可以有返回值  throw Exception 

    线程和lambda表达式结合

    //jdk 简化 lambda

        new Thread(()->{
          for (int i = 0; i < 20; i++) {
              System.out.println("一边听歌");
            }
        });

    线程的五种状态

    新生状态:New Thread();

    就绪状态:start() 线程进入就绪状态

    运行状态:线程被调度 获取cpu 进入运行状态

    阻塞状态: sleep wait join 其他操作如 read write 等引起的阻塞事件让线程进入阻塞状态

    阻塞事件解除后 线程重新进入就绪

    死亡状态:

    stop destroy。不建议使用

    终止线程:

    1.线程正常执行完毕

    2.外部干涉--- 加入标识(不要使用 stop destroy)

    提供一个boolean 型的终止变量
    线程内关联标识
    提供修改终止变量方法 外部改变

    sleep yield join

    sleep 线程等待  仍持有CPU (常用于网络延时或者倒计时)

     Thread.sleep();

    yield 让出cpu 让当前正在执行的线程暂停 让出cpu 转入就绪状态

     Thread.yield();

    join 合并线程  插队线程 :将此线程执行完成后,再执行其它线程,其他线程阻塞。

    对象.join()//当前线程被阻塞  该对象插队执行 

    线程优先级 1-10   NORM_PRIORITY 5 默认   

    优先调用级别高的线程  不代表绝对的先后顺序 

    守护线程damon:多用于后台操作日志 监控内存使用

    用户线程和守护线程 :虚拟机必须确保用户线程执行完毕 不用等待守护线程

    默认线程 :用户线程
    设置为守护线程 :thread.setDaemon(true); 

  • 相关阅读:
    python mysql Connect Pool mysql连接池 (201
    mysql: see all open connections to a given database?
    mysql int(3)与int(11)的区别
    Configure Amazon RDS mysql to store Chinese Characters
    Maximum length of a table name in MySQL
    JDBC Tutorials: Commit or Rollback transaction in finally block
    Java transient关键字使用小记
    Java构造和解析Json数据的两种方法详解二
    精选30道Java笔试题解答
    Visual Studio最好用的快捷键(你最喜欢哪个)
  • 原文地址:https://www.cnblogs.com/yxj808/p/15183348.html
Copyright © 2020-2023  润新知