线程小结一

一、进程与线程

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]

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

原文地址:https://www.cnblogs.com/limengkun/p/10668167.html