zoukankan      html  css  js  c++  java
  • 线程小结一

    一、进程与线程

    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]

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

  • 相关阅读:
    MySql控制台命令
    MySql笔记
    Unity打包android时会出的一些问题
    Unity3D2017.3.0基于Vuforia 开发AR流程(1)
    基于Unity开发广州幻境的Handy结合HTC Tracker的开发坑
    基于Unity 关于SteamVR中 手柄/Tracker不显示的问题
    使用Socket对序列化数据进行传输(基于C#)
    7. 整数反转
    6. Z 字形变换
    53. 最大子序和
  • 原文地址:https://www.cnblogs.com/limengkun/p/10668167.html
Copyright © 2011-2022 走看看