• 线程小结一


    一、进程与线程

    1.什么是进程: 正在运行的程序(正在运行的一大段代码)

    程序: 一段代码

    什么是线程:

    1.正在运行的一小段代码

    2.1个进程至少有1个线程

    在我们计算机中,运行了很多程序,但是对于电脑来说,它只看到很多的线程,它只是来回频繁切换读取线程中的内容

    我们是控制不了cpu的执行线程顺序,因为执行顺序,完全取决于cpu

    cpu以线程为单位来回进行频繁切换

    在同一时间片上,1个cpu只能执行1个线程

    时间片:一个很微观的时间,比毫秒还要短的时间

    2.怎么去创建线程对象

    1.继承

    class  类   extends Thread{

    public void run(){

    线程的主体

    }

    }

    //创建线程对象

    l = new 类();

    //启动线程

    l.start();

    2.实现Runnable接口

    class 类  implements Runnable{

    public void run(){

    线程主体

    }

    }

     l = new 类();

    //线程对象

    Thread t1 = new Thread(l);

    Thread t2 = new Thread(l);

    Thread t3 = new Thread(l);

    t1.start();

    t2.start();

    t3.start();

    3.Thread类的结构

    1.run方法              线程的主体,我们把核心代码放到run方法内部

    2.start方法         启动一个线程,让线程处于一个活跃状态,拥有获取cpu的执行权利

    4.主方法一共有多少个线程

    严格意义来说:

    1.主线程

    2.垃圾回收线程(一般我们不考虑垃圾回收线程)

    5.线程的注意事项:

    1.调用run方法和调用start方法的区别:

    调用run方法,它是不会启动一个独立的线程,它仅仅只是一个普通方法的调用

    调用start方法,它会开启一个独立的线程,让该线程处于活跃状态,可以拥有获取cpu的执行权利

    2.自己启动的线程和主线程有关系吗

    答:没有任何关系,创建的线程和它的环境线程是没有任何关系的。一旦创建好了之后,它就是一个独立的线程

    6.创建线程2种方式,它们有什么区别呢?

    1.继承: 它有局限性,因为类与类之间是继承关系,并且只能是单继承

    2.实现: 它扩展性较强,因为类与接口之间是实现关系,并且是多实现,既能保留原有的业务逻辑,也可以对功能进行扩展

    7.sleep  休眠, 休眠指定的时间,在这段时间中,它放弃cpu的执行权利,当休眠时间已过,该线程又处于活跃状态,又拥有了获取cpu的执行权利

    8.优先级:

    1.主线程的默认优先级是5

    2.自定义线程默认的优先级是和当前环境线程的优先级一致

    优先级范围:[1,10]

    优先级的值越大  就越先执行完毕

  • 相关阅读:
    建立十字链表
    KMP算法
    魔术师发牌问题(循环链表)
    约瑟夫问题(循环链表)
    中缀表达式 转 (逆)波兰表达式
    中缀表达式求值
    迷宫问题(回溯法)
    范数
    AUC
    概率论
  • 原文地址:https://www.cnblogs.com/limengkun/p/10668167.html
Copyright © 2020-2023  润新知