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

做网站公司官网域名服务网站

做网站公司官网,域名服务网站,开发平台软件产品,互联网营销师报名费目录 #x1f4d5; 前言 #x1f4d5; 认识线程#xff08;Thread#xff09; #x1f6a9; 概念 #x1f60a;线程是什么 #x1f642; 为啥要有线程 #x1f62d; 进程和线程的区别#xff08;面试题重点#xff09; #x1f92d; 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.hyszgw.com/news/92031.html

相关文章:

  • 中小企业网站设计山东做网站建设的好公司哪家好
  • 如何在网站上做404页面如何给网站做权重
  • 广东省建设工程总监扣分查询网站长沙营销型网站建设费用
  • 模板做网站影响seo建立门户网站的费用
  • 网站友情链接模块中国建筑劳务分包平台
  • 个人注册域名可以做网站么wordpress 安装插件 ftp
  • 域名备案网站要不要关电影网站建设多少钱
  • 自适应网站设计规范家具网站后台模板
  • 制作网站的费用建设网站你认为需要注意哪些问题
  • ppt做的最好的网站有哪些做电商网站都需要学什么
  • ip代理提取网站源码节能网站源码
  • 制作公司网站要多少钱政务公开加强网站建设
  • 有没有代做毕业设计的网站网易企业邮箱 登录
  • 聚化网网站医院网站建设官网
  • 苏州建网站公司选苏州聚尚网络网站关键词筛选
  • 基于淘宝联盟的返利网站怎么做商业网站改版需要多久
  • 网站建设招标公告wordpress知言主题
  • wordpress 经典网站管理系统admin入口
  • 网站制作的必备技巧有哪些重庆网络推广交流
  • 哪里有整站优化网站做优化必须要ftp吗
  • 怎么搭建mysql数据库网站百度提交链接多久会被收录
  • 沧州网站群徐州企业建站系统
  • 个体工商户经营范围做网站网站被封怎么
  • 北京公司网站设计电话柳州最好的网站推广公司
  • 专门做企业名录的网站网站服务器提供什么服务
  • 一个人开发一个网站需要多久p2p网站建设石家庄
  • 上海网站的优化这些奥运新闻得了中国新闻奖
  • 家政公司网站建设无极在线招聘网最新招聘
  • mssql网站开发wordpress自带hosts文件
  • 专业建材网站建设丰都网站建设价格