今天本人给大家讲解一下多线程,如有不对的或者讲的不好的可以多多提出,我会进行相应的更改,先提前感谢提出意见的各位了!!!

说说多线程本人自己对它理解的定义:因计算机的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这个类

创建线程的基本用法讲解完毕,又不懂或者不理解的可以在评论区给本人留言

最新文章

  1. 等差数列(bzoj 3357)
  2. winform中button的image属性无法更改
  3. 2 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之MySql的搭建
  4. 枚举GC Roots的实现
  5. [原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(一)
  6. visio篇章--1
  7. 自己挖坑自己跳 之JsonMappingException: (was java.lang.NullPointerException) (through reference chain:)
  8. HDU 2266 How Many Equations Can You Find(DFS)
  9. Ruiy classicsQuotations
  10. 降低Redis内存占用
  11. 分享13道上海尚学堂拿回来的Java面试真题,这些都是Java核心常见问题,想拿OFFER必看!
  12. 原生Js交互之DSBridge
  13. thinkphp模板中,checkbox回显问题
  14. IntelliJ IDEA 创建Spring+SpringMVC+mybatis+maven项目
  15. 国内的pip源
  16. Request实例
  17. xlrd、xlwt
  18. ELK日志分析系统
  19. Centos7 安装sz,rz命令
  20. HDU-1176.免费馅饼(数字三角形变形)

热门文章

  1. golang kafka clinet 内存泄露问题处理
  2. 口语、听力:新概念英语2,lesson 45
  3. django框架基础-ORM跨表操作-长期维护
  4. 错误修改.bashrc文件导致所有命令无法使用解决方法
  5. FPGA底层的时钟布线以及内部layout
  6. [LC] 79. Word Search
  7. XP停止更新不用愁 瑞星XP护盾给你持续保护
  8. 【转】【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】
  9. UML 类图介绍
  10. Spring+Struts2+Mybatis整合