Thead基础及两种创建方式
木木~五 人气:0今天本人给大家讲解一下多线程,如有不对的或者讲的不好的可以多多提出,我会进行相应的更改,先提前感谢提出意见的各位了!!!
说说多线程本人自己对它理解的定义:因计算机的CPU支持能够在同一时间执行多于一条线程并发执行的技术我们称它为多线程。 而在一个应用程序中独立运行一个片段的我们叫做“线程”(Thread)而线程有优先级的区别,级别越高的也先执行,并且还分守护和非守护线程,守护线程为其他服务提供服务的线程不能独立运行。当我们JVM中只有守护线程时JVM会退出。
java中实现线程的方法有很多,本人说两种方法:第一种是:继承Thread 第二种是:实现Runnable接口。
写案例之前先说一下这两种方法的区别!!
我相信有很多宝宝们在基础不错的情况下看到这两种方法的叫法,大概知道是怎么回事了。
先说说第一种方式:继承Thread
在java中要实现线程需要依赖于java.lang.Thread类,而Thread类是一个线程类,当我们继承了Thread类后,是需要实现它的run()方法,在主线程的main()里启动它的start()方法,就可以开启线程。
案例:
代码如下
运行结果:
可以看到运行:每次输出的值是不一样的,这就是多线程的缘故,所有的线程轮流使用CPU的使用权,执行平均每个线程占用CPU的时间片,时间片越长,它执行的就越多,优先级越高的线程了,他的时间片也越多,好比我们刚刚写的这个Demo案例一样,时间片的不同,导致他输出的信息顺序时间也有同。
如果还不是很明白,单核的CPU,单个CPU某一个时间点只能执行一个任务,那么就在打个比方,就好比我们一边听歌一边玩游戏电脑都可以一起进行,那是因为CPU的线程运算速度很快,我们肉眼基本发现不了他会有延迟的。
第二种方式:实现Runnable(推荐使用,安全性高,因为是直接在类中创建的一个Thread对象的)
看到实现二字,那就会想到继承,没错。第二种方式就是继承Runnable这个接口类,我们在第一种方式使用的Thread类,它也是实现了Runnable这个接口的,那么案例启。
注意:创建线程对象必须使用Thread这个对象,因为它实现了Runnable这个接口
案例:
运行结果:
下面说一下为什么是创建对象的时候传入的是tr这个类
创建线程的基本用法讲解完毕,又不懂或者不理解的可以在评论区给本人留言
加载全部内容