多线程(2)我们要掌握的

一:线程的实现(重点)

1.普通线程和多线程的区别

 

 当我们是第一个图的时候,我们首先主线程后,调用run方法后我们就会一直执行run方法,知道run方法执行结束后,我们才能继续执行我们的主线程;

当我们第二图的时候,我们首先主线程,到调用start方法后,我们主线程和子线程可以同时执行。互补干扰。

2.线程是独立执行的路径。

①main称之为主线程,为系统的入口,用于执行整个程序。

②在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统相关,先后顺序是不能人为干预的。

③对同一份资源操作时,会存在资源抢夺问题,需要加入并发控制。

④线程会带来额外的开销,如cpu调度时间,并发控制开销

3.线程的创建

1.继承Thread(重点)

①自定义线程类继承Thread类

②重写run()方法,编写线程执行体

③创建线程对象,调用start方法启动方法。

 

 线程不一定立即执行,cpu安排调度。

2.实现Runnable接口(重点)

创建线程方式2:实现Runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,调用start方法。

①定义MyRunnable类实现Runnable接口

②实现run()方法,编写线程执行体

③创建线程对象,调用start()方法启动线程

 小结:

①:继承Thread类

子类继承Thread类具备多线程能力

启动线程;子类对象.start()

不建议使用:避免单继承局限性

②:实现Runnable接口

实现接口Runnable具有多线程能力

启动线程;传入目标对象+Thread对象.start()

推荐使用:避免单继承局限性,灵活方便,方便同一个对象被多个线程使用

二:初始并发问题

发现问题:多个线程操作同一个资源情况下,线程不安全,数据紊乱

 2.模拟兔子睡眠的run

二:线程状态

三:线程同步(重点)

四;线程通讯问题(重点)

五:高级主题

posted @ 2021-04-23 17:08  iLisa  阅读(70)  评论(0编辑  收藏  举报