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

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

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

Thead基础及两种创建方式的更多相关文章

  1. 【转载】 Java中String类型的两种创建方式

    本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...

  2. String变量的两种创建方式

    在java中,有两种创建String类型变量的方式: String str01="abc";//第一种方式 String str02=new String("abc&qu ...

  3. java多线程总结一:线程的两种创建方式及比较

    1.线程的概念:线程(thread)是指一个任务从头至尾的执行流,线程提供一个运行任务的机制,对于java而言,一个程序中可以并发的执行多个线程,这些线程可以在多处理器系统上同时运行.当程序作为一个应 ...

  4. Android中Fragment的两种创建方式

    fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...

  5. cocos2dx 帧动画的两种创建方式

    看了好几天cocos2dx的帧动画,现在才有点眉目,为了高效期间我们一般会用到 精灵帧缓存(CCSpriteFrameCache) 和动画缓存(CCAnimationCache) .大体的操作步骤: ...

  6. java多线程总结一:线程的两种创建方式及优劣比较

    1.通过实现Runnable接口线程创建 (1).定义一个类实现Runnable接口,重写接口中的run()方法.在run()方法中加入具体的任务代码或处理逻辑. (2).创建Runnable接口实现 ...

  7. python 多进程的两种创建方式

    Python中使用线程有两种方式:函数或者用类来包装线程对象. 第一种---------函数 菜鸟教程的我没看懂,说说我自己懂的----看视频理解的 import time import thread ...

  8. java多线程总结:线程的两种创建方式及优劣比较

    1.通过实现Runnable接口线程创建 (1).定义一个类实现Runnable接口,重写接口中的run()方法.在run()方法中加入具体的任务代码或处理逻辑. (2).创建Runnable接口实现 ...

  9. 【重学Java】多线程基础(三种创建方式,线程安全,生产者消费者)

    实现多线程 简单了解多线程[理解] 是指从软件或者硬件上实现多个线程并发执行的技术. 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能. 并发和并行[理解] 并行:在同一时刻, ...

随机推荐

  1. python爬虫和数据分析、数据挖掘

    一.python爬虫脑图: 二.python爬虫流程: 三.python数据分析简介 四.python数据预处理方法 五.python数据挖掘 六.数据探索基础

  2. HTML配色表方案

  3. centos 中文乱码解决办法2

    特别注意:vm10自带虚拟机共享工具,自动识别utf-8格式的中文文件内容 下面步骤摘自网络: 两种方案其实差不多,这里提供两个文件的下载地址,免得去网上搜这两个文件了: fonts-chinese- ...

  4. 3dmax2012卸载/安装失败/如何彻底卸载清除干净3dmax2012注册表和文件的方法

    3dmax2012提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dmax2012失败提示3dmax2012安装未完成,某些产品无法安装,也有时候想重新安装3 ...

  5. selenium元素定位(一)

    Selenium提供了8种定位方式. id name class name tag name link text partial link text xpath css selector 这8种定位方 ...

  6. flink测试用例编写

    使用tableFunction的collect总是npe, 实际可以自定义collector, 在collector中做自己想做的事 不使用现成的collector

  7. spring security梳理

    核心服务:AuthenticationManager,UserDetailsService和AccessDecisionManager The AuthenticationManager, Provi ...

  8. 公式化学习urllib(第一卷)

    Import urllib.request 正常爬取网页: url=网址 +代表 下面测试一下: 结果我就不显示了 令html为读取后的对象 先用正则表达式抓取数据 Import re 令rule是抓 ...

  9. 经典题型-打印小星星(python)

    # * # * * # * * * # * * * * # * * * * * x = 0 while x < 5: x += 1 # 每次循环需要给y赋值0.清空y中存储的值 y = 0 wh ...

  10. jenkins发布项目到远程主机上,配置linux使用SSH免密码登录

    一.首先要配置两台linux如何使用SSH免密码登录,这样脚本执行scp命令以及远程执行脚本都不需要输入密码: A为本地主机(即用于控制其他主机的机器,jenkins服务器) ; B为远程主机(即被控 ...