当前位置: 首页 > news >正文

如何做游戏试玩网站联盟营销平台

如何做游戏试玩网站,联盟营销平台,手机页面网站模板怎么卖,网站开发公司招聘目录 📕 前言 📕 认识线程(Thread) 🚩 概念 😊线程是什么 🙂 为啥要有线程 😭 进程和线程的区别(面试题重点) 🤭 Java的线程和操作系统线程…

目录

📕 前言

📕 认识线程(Thread)

🚩 概念

😊线程是什么

🙂 为啥要有线程

😭 进程和线程的区别(面试题重点)

🤭 Java的线程和操作系统线程的关系

🚩 第⼀个多线程程序

🙂 使用 jconsole 命令观察线程

📕 创建线程

🚩方法一:继承 Thread 类

🚩 方法2:实现 Runnable 接口        

🚩方法3:其他变形


📕 前言

当前的CPU都是多核心CPU,需要通过一些特定的编程技巧,把要完成的任务,拆解成多个部分,并且分别让他们在不同的cpu上运行,否则多核心cpu就形同虚设了,把这种编程称为"并发编程",代指了并行 + 并发。

📕 认识线程(Thread)

线程thread,也成为"轻量级进程",创建销毁开销更小

🚩 概念

😊线程是什么

一个线程就是一个 “执行流”. 每个线程之间都可以按照顺序执行自己的代码. 多个线程之间 “同时” 执行着多份代码

例如:

一家公司要去银行办理业务,既要进行财务转账,又要进行福利发放,还得进行缴社保。
如果只有张三一个会计就会忙不过来,耗费的时间特别长。为了让业务更快的办理好,张三又找来两位同事李四、王五一起来帮助他,三个人分别负责一个事情,分别申请一个号码进行排队,自此就有了三个执行流共同完成任务,但本质上他们都是为了办理一家公司的业务。
此时,我们就把这种情况称为多线程,将一个大任务分解成不同小任务,交给不同执行流就分别排队执行。其中李四、王五都是张三叫来的,所以张三一般被称为主线程(Main Thread)

结论:

线程是系统调度执行的基本单位!!!

进程是系统资源分配的基本单位!!!

所有上节课谈到的"进程调度"一系列内容,更准确的说都是"线程调度".

上节课谈到的可视为都是"只包含一个线程的进程"

🙂 为啥要有线程

首先, “并发编程” 成为 “刚需”

  • 单核 CPU 的发展遇到了瓶颈. 要想提高算力, 就需要多核 CPU. 而并发编程能更充分利用多核 CPU
    资源.
  • 有些任务场景需要 “等待 IO”, 为了让等待 IO 的时间能够去做一些其他的工作, 也需要用到并发编程

其次, 虽然多进程也能实现 并发编程, 但是线程比进程更轻量

  • 创建线程比创建进程更快.
  • 销毁线程比销毁进程更快.
  • 调度线程比调度进程更快.

最后, 线程虽然比进程轻量, 但是人们还不满足, 于是又有了 “线程池”(ThreadPool) 和 “协程”(Coroutine)

关于线程池和协程博主会在后面一一介绍.此处暂时不做过多讨论

😭 进程和线程的区别(面试题重点

例子:有一个滑稽老铁,他的任务是把100只鸡吃掉,如何一个滑稽在这吃,效率很低!!!

  • 进程是包含线程的. 每个进程至少有一个线程存在,即主线程。
  • 进程和进程之间不共享内存空间. 同一个进程的线程之间共享同一个内存空间.
  • 进程是系统分配资源的最小单位,线程是系统调度的最小单位

🤭 Java的线程和操作系统线程的关系

线程是操作系统中的概念. 操作系统内核实现了线程这样的机制, 并且对用户层提供了一些 API 供用户使用(例如 Linux 的 pthread 库).

Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进行了进一步的抽象和封装

🚩 第⼀个多线程程序

线程本身是由操作系统提供的,操作系统提供了API让我们操作线程,JVM就对操作系统的API进行了封装,线程这里,提供了 Thread 类来表示线程。

首先并不是直接在这里创建一个实例

而是写一个类,让这个类继承 Thread 类 

然后在 myThread 类里面重写run方法,run方法的作用是用于描述线程具体干什么活!!!

在main方法中,创建myThread实例,通过对象的引用去调用start,就可以调用myTread里面的run

上述代码中,其实有两个线程!!!

1,一个是自己写的 t 线程,

2,一个是main方法所在的线程,是jvm进程在启动的时候,自己创建的线程(也就是一个进程至少有一个线程)        

上述代码不够明显,没有多线程的感觉,进行修改一下:

此时交替的快速的输出 "hello Tread"和 "hello main",此时就是在"并发式"的执行

🙂 使用 jconsole 命令观察线程

可以通过Java提供的工具,更清楚的看到代码中的线程,jdk中包含的jconsole工具

目前还是一个可执行文件,我们双击运行他,通过这个进程可以去监视其他进程的运行状态

勾选本地连接,里面有一个

选择Demo1进行连接

会提示你不安全怎么怎么,直接选择不安全连接,进去之后选择进程窗口,就可以看到Java进程里面包含的所有线程情况

我们所运行的这个程序,一直在跑,在任务管理器中这个进程在疯狂的消耗cpu,主要是因为while true 循环太快了。

我们可以让while循环运行时,进行睡眠一下(单位是毫秒),不要速度太快,就是让线程主动进入"阻塞状态",主动放弃去cpu上执行,时间到了之后,线程才会解除阻塞状态(回到就绪态),重新被调度到cpu上执行。

此时sleep报错了,是因为可能会抛出一个受查异常,所有要通过try cath处理。

此时代码执行就变慢了,在观察任务管理器中的cpu占用率

加上 sleep就让cpu消耗的资源大幅度降低了

我们发现打印的结果是无序的,可能是main在前,Thread在前

📕 创建线程

共有5种写法,都很常用!!!

🚩方法一:继承 Thread 类

我们仔细观察代码发现,上述代码就是通过继承 Thread 类来创建线程的

观察发现,我们重写的是run方法,里面用于描述线程干了什么任务,为什么是通过 start 去调用呢

因为 start 调用的是操作系统提供的"创建线程"API,在内核中创建对于pcb,并且把pcb加入到链表中,进一步系统调度到这个进程之后,就会执行上述 run 方法中的逻辑。

他是Thread中自带的方法,通俗的来说run方法记录这个"事情",而strat就是要执行run里面的"事情"

如果不去调用start,直接调用run的话,就没有创建出新的线程,就是在主线程中执行myStart类里面的run进行循环打印,此时的run和主线程的循环就是串行执行,就没有"并发执行"这种效果,就必须要求run中的循环结束,才能继续执行到下一个循环!!!

像刚才谈到的run,只是定义好,而不去手动调用,把这个方法的调用,交给系统/其他的库/其他框架(别人)调用,这样的方法(函数)称为"回调函数"(callback function)

🚩 方法2:实现 Runnable 接口        

在Runnable这个接口里面,只有一个方法(run)

Runnable的作用是描述一个"任务",这个任务和具体的执行机制无关(通过线程的方式执行,还是通过其他的方式执行),那么run也就是要执行的"任务"内容本身了

此时就和刚刚一并发的执行了

我们引入 Runnable 就是为了"解耦合",未来如果要更换成其他的方式来执行这些任务,那么改动的成本就比较低!!!

🚩方法3:其他变形

  • 匿名内部类创建 Thread 子类对象

  • 匿名内部类创建 Runnable 子类对象

  • lambda 表达式创建 Runnable 子类对象

lambda表达式本质上就是针对匿名内部类的平替

注意:catch里面的异常处理可能不一样,和异常处理方式

在sleep异常处理的时候,在main方法发现有两种处理方式,第一种就是在main方法后面进行方法声明(throws),第二种就是进程try—>catch处理

在线程的run中就只有一个选择,只能进行try—>catch处理

原因:

上述的方法签名,重写......都是javac规定的。

http://www.tj-hxxt.cn/news/74632.html

相关文章:

  • 搭建平台的重要性武汉seo推广优化
  • 如何建立自己的云服务器小红书seo优化
  • 中国市场营销培训网西安seo外包公司
  • 网站建设云解析dns有什么用中国十大电商平台
  • 网站关键词分布情况百度搜索数据查询
  • 开发游戏app北京aso优化
  • 用vs2017做网站百度电脑版下载安装
  • 爱站网是什么百度收录怎么做
  • 如何下载别人的网站做模板搜索引擎seo关键词优化方法
  • wordpress首页分类绍兴seo网站管理
  • 怎么做合买彩票网站如何建立个人网址
  • 网站建设管理总结千锋教育的官网
  • 番禺网站开发系统东莞关键词seo优化
  • 天津网站建设普斯泰semiconductor
  • 做单页网站南宁网站建设公司
  • 古交做网站佛山网站建设维护
  • 有几个网站重庆seo网站推广优化
  • 大连网站建设培训班真实的优化排名
  • 年度网站信息化建设工作计划企业网站管理系统源码
  • 网站制作说明免费的拓客平台有哪些
  • 机器人编程宁波seo关键词优化方法
  • 网站推广易网宣百度一下子就知道了
  • 花钱人做的网站做好后算谁的手机系统优化工具
  • 福州一站式品牌推广运营公司你对网络营销的理解
  • 有哪些做海报的网站独立站seo实操
  • 美国网站的域名竞价sem托管公司
  • 农副产品销售网站开发关键词检测
  • 丰城网站建设google搜索免费入口
  • 哪些网站做婚纱摄影思亿欧seo靠谱吗
  • 新开传奇网站韩版企业推广软件