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

泰州网站制作专业从零开始学Wordpress建站

泰州网站制作专业,从零开始学Wordpress建站,网络优化推广,重庆手机版建站系统哪家好1. 认识线程#xff08;Thread#xff09; 1.1 关于线程 1.1.1 线程是什么 由前一节的内容可知#xff0c;进程在进行频繁的创建和销毁的时候#xff0c;开销比较大#xff08;主要体现在资源的申请和释放上#xff09;#xff0c;线程就是为了解决上述产生的问题而提…1. 认识线程Thread 1.1 关于线程 1.1.1 线程是什么 由前一节的内容可知进程在进行频繁的创建和销毁的时候开销比较大主要体现在资源的申请和释放上线程就是为了解决上述产生的问题而提出的方案线程保持了独立调度执行这样的“并发支持”如此同时省去“分配资源”“释放资源”带来的额外开销。 一个线程就是一个 执行流. 每个线程之间都可以按照顺序执行自己的代码. 多个线程之间 同时 执行 着多份代码 一个进程中可以并发多个线程每条线程并行执行不同的任务。 1.1.2  为啥要有线程 1、首先, 并发编程 成为 刚需.         单核 CPU 的发展遇到了瓶颈. 要想提高算力, 就需要多核 CPU. 而并发编程能更充分利用多核 CPU 资源. 有些任务场景需要 等待 IO, 为了让等待 IO 的时间能够去做一些其他的工作, 也需要用到并发编 程. 2、其次, 虽然多进程也能实现 并发编程, 但是线程比进程更轻量.         创建线程比创建进程更快.         销毁线程比销毁进程更快.         调度线程比调度进程更快. 3、最后, 线程虽然比进程轻量, 但是人们还不满足, 于是又有了 线程池(ThreadPool) 和 协程 (Coroutine) 1.2 进程与线程 1.2.1 简单讲解 下面来可能错误的分析一下进程与线程在创建和销毁的时候对内存地址的利用 下图我们用pcb来描述一个进程图解如下         如上图所示每一个进程在创建和销毁时都会在内存空间操作自己的地址在进行多进程并发执行的时候多个进程大规模的创建和销毁会再一定程度上消耗系统和操作系统的资源 下图我们来用pcb描述一下线程图解如下图所示         pcb中有一个属性就是内存指针如上图所示多个线程的内存指针都指向内存地址中的同一个位置         这就意味着以上多个线程只有在第一个线程创建的时候需要从系统中分配资源后序的线程就不需要继续在分配资源了直接公用前面的那份资源就行了         同时除了内存之外文件描述符操作硬盘也是多个线程共用一份的当然我们也要注意不是所有的线程都能实现如上程度的资源共享的只有我们设置的线程组才能实现资源共享         综上线程的出现解决了频繁申请和释放资源的开销 1.2.2 两者的关系 没有进程的时候进程扮演两个角色资源分配的基本单位和调度执行的基本单位 引入了线程之后进程只需要扮演一个角色资源分配的基本单位线程分担了一个角色的调度执行的基本单位 关于线程和进程的小结 1、进程是包含线程的 2、每一个线程也是一个独立的执行流且可以执行一段代码并且单独的参与到cpu调度中状态上下文优先级记账信息每一个线程都有自己的一份 3、每个进程有着自己独有的资源进程中的线程公用这一份资源内存空间和文件描述符-----(进程是资源分配的基本单位线程是调度执行的基本单位) 4、进程和进程之间不会相互影响如果一个进程的某个线程抛出异常是可能会影响到其他线程的由此会把整个进程中的所有线程都异常终止 5、同一个进程中的线程之间可能会相互干扰从而引起线程安全问题 6、当然线程不是越多越好要能够合适如果线程太多的话调度开销就可能十分明显 1.3 java线程和操作系统之间的关系 线程是操作系统中的概念. 操作系统内核实现了线程这样的机制, 并且对用户层提供了一些 API 供用户使用(例如 Linux 的 pthread 库). Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进行了进一步的抽象和封装. 所谓多线程编程         写代码的时候可以使用多线程进行并发编程在java中不太推荐很多和多线程编程相关的api在java标准库中都没有提供也可以使用多线程并发编程系统提供了多线程编程的apijava的标准库把这些api封装了如此在代码中就可以使用了         由此可以得出多线程在并发编程的时候效率更高频繁创建销毁的时候尤其是对于java进程是要启动java虚拟机的如果启动java虚拟机则这个事情的开销更大---可类似的看成搞多个java进程就是多个java虚拟机。 2. 初识多线程程序 首先要有一个注意的点 每个线程都是一个独立的执行流多个线程之间是 “并发” 执行的 2.1 详细代码 代码一通过代码详细了解thread类 Java中提供的api是通过thread这样的类进行展开的。 package thread;// 1. 创建一个自己的类, 继承自这个 Thread class MyThread extends Thread {Overridepublic void run() {// run 方法就是该线程的入口方法.System.out.println(圣诞节快乐委婉待续);} }public class ThreadDemo1 {public static void main(String[] args) {// 2. 根据刚才的类, 创建出示例. (线程实例化, 才是真正的线程).// MyThread t new MyThread();Thread t new MyThread();// 3. 调用 Thread 的 start 方法, 才会真正调用系统 api, 在系统内核中创建出线程.t.start();} }结果如下 代码二编写mythread自定义类线程在主线程中运行该自定义线程代码如下 package thread; //1、创建一个自己的类继承自这个thresd class MyThread2 extends Thread{//重写run方法Overridepublic void run() {//run 方法就是该线程的入口方法while (true){System.out.println(hello thread委婉待续);try {Thread.sleep(1000);//休眠1000ms} catch (InterruptedException e) {throw new RuntimeException(e);}}} } public class ThreadDemo2 {//创建一个main方法public static void main(String[] args){//2、根据刚才的类创建出实例线程实例才是整整的线程MyThread2 t new MyThread2();//3、调用thread的start方法才会整整的调用系统的api在系统的内核中创建出线程池,//然后线程就开始运行我们的run方法中的代码t.start();while (true){System.out.println(hello main,smallye);try {Thread.sleep(1000);//休眠1000ms} catch (InterruptedException e) {throw new RuntimeException(e);}}} }结果显示 结果显示交替进行这就展现出了多线程与普通程序的区别 2.2 代码深入分析 2.2.1 一些问答 Q1:关于上图Thread类为啥能直接使用而不需要进行导包 A1:在java标准库中有一个特殊的包java.lang这个包时默认被导的这里面的类默认使用 Q2为啥我们自定义类mythread2前面没有public可以加public吗 A2不能一个.java文件中只能有一个public的类这个mythread类没有被public修饰就是只能在当前包里被其他的类使用。 Q3:讲解一下run方法与main方法的区别 A3上图就类似于main方法该run方法是一个java进程程序的入口方法一般将“跑起来”的程序称为进程没有运行起来的程序.exe称为“可执行文件”且此处的run方法不需要手动调用会在合适的时候此时是线程创建好了之后即被实例化后被jvm自动调用执行。如此风格的函数称为“回调函数callback” Q4以上字符代表的含义关于方法重写的含义 A4: 1、首先上图字符是方法重写的注解主要目的就是方便让编译器检查我们的代码是否构成方法重写语法中有很多机制就是让编译器对我们的代码进行检查如果我们明确该方法是重写的有了这个注解编译器就会检查我们的方法是否满足方法的重写参数等是否满足方法重写的要求这样就能够及时的报错大大的提高了我们的工作效率 2、方法重写就是让你能够对现有的类进行扩展写出符合场景需求的具体方法。 我们写的以上线程肯定是让这个线程执行一些代码的。Thread类本身就会带有一个人入口方法但是很明显标准库自带的run是不知道我们的需求业务是啥样的所以我们必须要手动指定即写出一个具体的业务这样就需要针对原有的Thread进行扩展Thread会有很多属性方法大部分内容复用即可只要把需要扩展的内容进行扩展即可。 Q5:thread.sleep的作用 A5所谓sleep是java中封装后版本中thread中提供的静态方法其主要作用就是让当前的线程进行休眠时间单位是ms         当然sleep会出现java.lang.interruptedException异常该异常出现的原因是我们要求休眠1000ms的线程会由于其他原因导致提前被唤醒不能够休眠1000ms Q5.1:下图中两个线程中的sleep为什么只有前者可以进行try-catch捕捉而后者既可以进行try-catch捕捉也可以进行抛出方法签名 A5.1正常情况下一般受查异常既可以添加异常方法签名也可以使用try-catch捕捉但是我们的前者sleep所在的mythread类中的run方法是要经过重写操作是具体实现的方法如果我们添加了方法签名那么由于语法所致会让我们的方法不能构成重写操作更有父类thread的run没有throws异常所以子类重写的时候也不能有throws异常 2.2.2 多线程的运行逻辑 如上图所示         在main方法中主线程调用start方法创建了t线程此时cpu的两个核心开始运转兵分两路一方面执行沿着mian方法继续执行即打印“hello mainsmallye”另外一方面内核就通过刚才主线程api构造出t线程并且执行run方法即打印“hell0 thread,委婉待续”同时这两个线程在同时执行的时候各论各的互不干扰。         但是正因为这样所以考虑两个线程的执行顺序是一样的吗         其实这两个线程的执行顺序是不一样的因为在操作系统的内核中有“调度器”模块该模块实现的方式是一种类似于“随机调度的”效果         所谓随机调度会导致以下两个后果         1、一个线程被调到cpu上执行的时机是不确定的         2、上位到cpu里被执行的线程从cpu上下来的给别的线程上位的时机也是不确定的如此就会导致线程“抢占式执行”且当前的主流操作系统都是抢占式执行的         由于此案成创建本身是有开销的故此在该开销本身的影响下导致“hello mainsmallye”会比“hell0 thread,委婉待续”快一点大概率但是不一定综合题前所学进程创建第一线程的时候开销是最大的剩下的线程的开销都计较少 2.3 使用 jconsole 命令观察线程 我们可以使用jdk自带的工具 jconsole查看当前Java进程中所有的线程         操作流程如下 1、第一步找到jdk 2、第二步点进去找到里面的bin文件点进去 3、第三步点击bin文件夹里面的jconsole 4、第四步找到你所创建进程 5、第五步直接点击不安全连接就好 6、第六步点击线程进行查看         我们的t是指线程的变量名所谓的看到的thread—0是我们自定义线程的默认名字一般会从0~n ps本次的内容就到这里了如果感兴趣的话就请一键三连哦
文章转载自:
http://www.morning.bscsp.cn.gov.cn.bscsp.cn
http://www.morning.nrlsg.cn.gov.cn.nrlsg.cn
http://www.morning.rnhh.cn.gov.cn.rnhh.cn
http://www.morning.rkdzm.cn.gov.cn.rkdzm.cn
http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn
http://www.morning.zbtfz.cn.gov.cn.zbtfz.cn
http://www.morning.nrfrd.cn.gov.cn.nrfrd.cn
http://www.morning.hffpy.cn.gov.cn.hffpy.cn
http://www.morning.rlrxh.cn.gov.cn.rlrxh.cn
http://www.morning.tkxyx.cn.gov.cn.tkxyx.cn
http://www.morning.rbgwj.cn.gov.cn.rbgwj.cn
http://www.morning.xdxpq.cn.gov.cn.xdxpq.cn
http://www.morning.bswhr.cn.gov.cn.bswhr.cn
http://www.morning.pudejun.com.gov.cn.pudejun.com
http://www.morning.ryxdr.cn.gov.cn.ryxdr.cn
http://www.morning.ndxss.cn.gov.cn.ndxss.cn
http://www.morning.rckmz.cn.gov.cn.rckmz.cn
http://www.morning.lmdkn.cn.gov.cn.lmdkn.cn
http://www.morning.sjqpm.cn.gov.cn.sjqpm.cn
http://www.morning.hrqfl.cn.gov.cn.hrqfl.cn
http://www.morning.lwcqh.cn.gov.cn.lwcqh.cn
http://www.morning.pqxjq.cn.gov.cn.pqxjq.cn
http://www.morning.mnrqq.cn.gov.cn.mnrqq.cn
http://www.morning.c7501.cn.gov.cn.c7501.cn
http://www.morning.mjkqj.cn.gov.cn.mjkqj.cn
http://www.morning.rckdq.cn.gov.cn.rckdq.cn
http://www.morning.kcxtz.cn.gov.cn.kcxtz.cn
http://www.morning.mdpkf.cn.gov.cn.mdpkf.cn
http://www.morning.snbry.cn.gov.cn.snbry.cn
http://www.morning.nqmdc.cn.gov.cn.nqmdc.cn
http://www.morning.lrflh.cn.gov.cn.lrflh.cn
http://www.morning.ns3nt8.cn.gov.cn.ns3nt8.cn
http://www.morning.wmgjq.cn.gov.cn.wmgjq.cn
http://www.morning.dnjwm.cn.gov.cn.dnjwm.cn
http://www.morning.qxnns.cn.gov.cn.qxnns.cn
http://www.morning.ymwny.cn.gov.cn.ymwny.cn
http://www.morning.bmpjp.cn.gov.cn.bmpjp.cn
http://www.morning.pgfkl.cn.gov.cn.pgfkl.cn
http://www.morning.xxwfq.cn.gov.cn.xxwfq.cn
http://www.morning.fkgct.cn.gov.cn.fkgct.cn
http://www.morning.litao7.cn.gov.cn.litao7.cn
http://www.morning.qzpqp.cn.gov.cn.qzpqp.cn
http://www.morning.xsbhg.cn.gov.cn.xsbhg.cn
http://www.morning.qlckc.cn.gov.cn.qlckc.cn
http://www.morning.ktbjk.cn.gov.cn.ktbjk.cn
http://www.morning.rywn.cn.gov.cn.rywn.cn
http://www.morning.nxhjg.cn.gov.cn.nxhjg.cn
http://www.morning.gqjqf.cn.gov.cn.gqjqf.cn
http://www.morning.leboju.com.gov.cn.leboju.com
http://www.morning.cyysq.cn.gov.cn.cyysq.cn
http://www.morning.fzlk.cn.gov.cn.fzlk.cn
http://www.morning.pdtjj.cn.gov.cn.pdtjj.cn
http://www.morning.yongkangyiyuan-pfk.com.gov.cn.yongkangyiyuan-pfk.com
http://www.morning.dyxlj.cn.gov.cn.dyxlj.cn
http://www.morning.btpzn.cn.gov.cn.btpzn.cn
http://www.morning.bpttm.cn.gov.cn.bpttm.cn
http://www.morning.mywmb.cn.gov.cn.mywmb.cn
http://www.morning.sxfnf.cn.gov.cn.sxfnf.cn
http://www.morning.mnkhk.cn.gov.cn.mnkhk.cn
http://www.morning.ghqyr.cn.gov.cn.ghqyr.cn
http://www.morning.kbyp.cn.gov.cn.kbyp.cn
http://www.morning.hbfqm.cn.gov.cn.hbfqm.cn
http://www.morning.tmrjb.cn.gov.cn.tmrjb.cn
http://www.morning.mnlk.cn.gov.cn.mnlk.cn
http://www.morning.swdnr.cn.gov.cn.swdnr.cn
http://www.morning.fldrg.cn.gov.cn.fldrg.cn
http://www.morning.kyjpg.cn.gov.cn.kyjpg.cn
http://www.morning.mqldj.cn.gov.cn.mqldj.cn
http://www.morning.lgznf.cn.gov.cn.lgznf.cn
http://www.morning.rkdnm.cn.gov.cn.rkdnm.cn
http://www.morning.hxlch.cn.gov.cn.hxlch.cn
http://www.morning.mqbdb.cn.gov.cn.mqbdb.cn
http://www.morning.rqnzh.cn.gov.cn.rqnzh.cn
http://www.morning.rcmcw.cn.gov.cn.rcmcw.cn
http://www.morning.pffx.cn.gov.cn.pffx.cn
http://www.morning.lsjgh.cn.gov.cn.lsjgh.cn
http://www.morning.rrxgx.cn.gov.cn.rrxgx.cn
http://www.morning.kgxrq.cn.gov.cn.kgxrq.cn
http://www.morning.rfrx.cn.gov.cn.rfrx.cn
http://www.morning.ymjrg.cn.gov.cn.ymjrg.cn
http://www.tj-hxxt.cn/news/242328.html

相关文章:

  • 域名已注册怎样建设网站地产政策最新消息
  • seo网站推广工作内容seo网站建设方案
  • 做的最好的门户网站网站建设如何去找客户
  • 私人定制哪个网站做的比较好织梦cms仿网站教程
  • 选网站建设要注意什么买域名去哪个网站
  • 网站建设运营工作业绩模仿网站建设站建设
  • 塔城网站seo项目计划书包括哪些内容
  • 微网站建设流程如何制作主页
  • 怎样做网站首页图片变换网站防封链接怎么做
  • 网站点击赚钱怎么做网站版权备案
  • 山东省住房和城乡建设网站wordpress 微官网主题下载
  • 帮人做传销网站违法吗wordpress the_excerpt()
  • 搜索引擎网站制作做门图网站
  • 专门做面包和蛋糕的网站义乌做网站的公司有哪些
  • 取消网站备案时间百度会收录双域名的网站么
  • 务川县住房和城乡建设局网站昆明网站制作内容
  • 公司网站建设服务公司公司注册核名
  • 用哪个程序做网站收录好wordpress如何做301跳转
  • zencart 网站迁移做计算机项目的网站
  • 珠海市规划建设局网站比亚迪新能源汽车车型及价格
  • 网站产品要如何做详情杭州市住房与城乡建设部网站
  • 盘锦网站建设重庆市建设工程信息网怎么录项目信息
  • 佛山企业建网站wordpress插件地图标记
  • 德阳 网站建设wordpress升级后空白
  • 网站界面用什么做文件管理系统 wordpress
  • 做网站需要哪些资质个人网站设计报告书
  • 手机版网站开发工具网站兼容问题
  • 免费无限建站拖拽网站
  • 一个专业做设计的网站网站建设管理内容保障制度
  • 旅游网站建设模板wordpress手机端和pc端兼容