标签:自定义 art 没有 under 自己 局限 ble 代码 nbsp
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]
优先级的值越大 就越先执行完毕
标签:自定义 art 没有 under 自己 局限 ble 代码 nbsp
原文地址:https://www.cnblogs.com/limengkun/p/10668167.html