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

建设网站哪家便宜湖南网站优化

建设网站哪家便宜,湖南网站优化,营销网站建设多少钱,一线设计公司目录 二、多线程代码 1.继承Thread类 2.实现Runnable接口 3.匿名内部类 3.1 创建Thread⼦类对象 3.2 创建Runnable⼦类对象 4.lambda表达式(推荐) 小结: 🔥面试题:Java中创建线程都有哪些写法 二、多线程代码 …

目录

二、多线程代码

1.继承Thread类

2.实现Runnable接口

 3.匿名内部类

3.1 创建Thread⼦类对象

3.2 创建Runnable⼦类对象

4.lambda表达式(推荐)

 小结:

🔥面试题:Java中创建线程都有哪些写法


二、多线程代码

1.继承Thread类

package thread;class MyThread extends Thread {@Overridepublic void run() {//这里写的代码就是该线程要完成的工作while (true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}
}public class Demo1 {public static void main(String[] args) throws InterruptedException {Thread t = new MyThread();//t.start();//没有创建出新的线程,就是在主线程中执行run中的循环打印(就是单线程了,串行执行)t.run();while (true) {System.out.println("hello main");t.sleep(1000);}}
}
  • 上述代码中其实有两个线程,一个t线程,一个main线程(主线程:JVM进程启动的时候,自己创建的线程)
  • 重写Thread方法中的run方法:描述线程需要完成的工作
    • 只是定义好,把这个方法的调用交给系统/其他的库/其他框架调用,(回调函数)
  • sleep方法:让当前线程主动进入“阻塞”状态,主动放弃在CPU上的执行,时间到了,才会解除,重新被调度到CPU上执行
  • start方法:调用操作系统提供创建线程的API,在内核中创建对应的PCB,并且把PCB加入到链表中,进一步的系统调度到这个线程之后,就会执行上述run方法的逻辑
  • Q1如果开发中,发现你负责的服务器程序,消耗CPU资源超出预期,你如何排查?
    • 首先确认是哪个线程消耗的CPU比较高
    • 进一步排查,线程中是否有类似的“非常快速的”循环
    • 确认是否这里的循环一个这么快
      • 应该的话就可以升级更好的CPU
      • 如果不应该,说明需要在循环中引入一些等待操作
  • 上述代码结果顺序是不确定的:
    • 多线程的调度是无序的,即抢占式执行:任何一个线程 在执行任何一个代码的时候,都可能被其他线程抢占CPU资源

2.实现Runnable接口

package thread;class MyRunnable implements Runnable {@Overridepublic void run() {while (true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}
}public class Demo2 {public static void main(String[] args) {Thread t = new Thread(new MyRunnable());t.start();while (true) {System.out.println("hello main");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}
}
  • Runnable的作用:是描述一个“任务”,表示“可执行的”
  • 和继承Thread类创建线程比较
    • 一是Thread自己记录要干啥
    • 二是Runnable记录要干啥,Thread负责执行
      好处:解耦合,把任务和线程拆分开,把这样的任务给其他地方执行

 3.匿名内部类

3.1 创建Thread⼦类对象
package thread;public class Demo3 {public static void main(String[] args) throws InterruptedException {Thread t = new Thread() {@Overridepublic void run() {while(true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}};t.start();while (true) {System.out.println("hello main");Thread.sleep(1000);}}
}
  • 过程
    • 创建一个Thread子类
    • 同时创建一个该子类的实例
      但是对于匿名内部类来说,只能创建这一个实例,因为拿不到名字
    • 子类内部重新父类的run方法
  • 好处:简单

3.2 创建Runnable⼦类对象
package thread;public class Demo4 {public static void main(String[] args) throws InterruptedException {Thread t = new Thread(new Runnable() {@Overridepublic void run() {while (true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}});t.start();while (true) {System.out.println("hello main");Thread.sleep(1000);}}
}
  • 过程:和3.1代码一样
  • 区别:此处的匿名内部类只是针对Runnable,和Thread没有关系
    只是把Runnable的实例,作为参数传入Thread的构造方法中
  • Q1为什么在main方法中处理sleep异常有两种选择,而线程run中的sleep方法只有一种
    • main方法可以
      • throws
      • try catch
    • 线程中的run方法
      • 只能try catch
    • 因为父类run中没有抛出异常,由于重写要求方法签名是一样的的,也无法抛出异常
      throws其实是方法签名的一部分(方法名字+方法的参数列表【不包含返回值和pubic/private】+声明抛出的异常)

4.lambda表达式(推荐

package thread;public class Demo5 {public static void main(String[] args) throws InterruptedException {Thread t = new Thread(() -> {while (true) {System.out.println("hello thread");try {Thread.sleep(10000);} catch (InterruptedException e) {throw new RuntimeException(e);}}});t.start();while (true) {System.out.println("hello main");Thread.sleep(1000);}}
}
  • 本质就是一个”匿名函数“,一次性函数,用完就丢

 小结:

  • 5种方法都是要把线程的任务内容表示出来
  • 通过Thread的start来创建/启动系统中的线程
    Thread对象和操作系统中的线程是一一对应的关系

🔥面试题:Java中创建线程都有哪些写法

  • 继承Thread类
  • 实现Runnable接口
  • 匿名内部类
    • 创建Thread子类
    • 创建Runnable子类
  • lambda表达式
  • 实现Callable接口(TODO)
  • 使用线程池(TODO)


文章转载自:
http://paratrooper.jbxd.cn
http://captaincy.jbxd.cn
http://dorter.jbxd.cn
http://newground.jbxd.cn
http://codlin.jbxd.cn
http://deuterogenesis.jbxd.cn
http://extratellurian.jbxd.cn
http://constatation.jbxd.cn
http://orjonikidze.jbxd.cn
http://voudou.jbxd.cn
http://foundation.jbxd.cn
http://incognizant.jbxd.cn
http://smaragd.jbxd.cn
http://outshine.jbxd.cn
http://straphang.jbxd.cn
http://macrencephaly.jbxd.cn
http://tiara.jbxd.cn
http://perspicacity.jbxd.cn
http://alsoran.jbxd.cn
http://costoscapular.jbxd.cn
http://scrutator.jbxd.cn
http://fleshment.jbxd.cn
http://ondometer.jbxd.cn
http://fiot.jbxd.cn
http://aneuploid.jbxd.cn
http://gentility.jbxd.cn
http://stopped.jbxd.cn
http://annexe.jbxd.cn
http://hyperoxia.jbxd.cn
http://unprofitable.jbxd.cn
http://metre.jbxd.cn
http://trachea.jbxd.cn
http://gaudy.jbxd.cn
http://rivalless.jbxd.cn
http://conservatoire.jbxd.cn
http://jbs.jbxd.cn
http://bargainer.jbxd.cn
http://preserver.jbxd.cn
http://aviette.jbxd.cn
http://ganglionic.jbxd.cn
http://shent.jbxd.cn
http://chimere.jbxd.cn
http://laker.jbxd.cn
http://coppernosed.jbxd.cn
http://likin.jbxd.cn
http://inshore.jbxd.cn
http://immunoreaction.jbxd.cn
http://magneton.jbxd.cn
http://stainless.jbxd.cn
http://nineteenth.jbxd.cn
http://loftiness.jbxd.cn
http://buskin.jbxd.cn
http://haugh.jbxd.cn
http://hindu.jbxd.cn
http://trophozoite.jbxd.cn
http://coaly.jbxd.cn
http://shelvy.jbxd.cn
http://finland.jbxd.cn
http://disillusion.jbxd.cn
http://sluggish.jbxd.cn
http://activise.jbxd.cn
http://discerptible.jbxd.cn
http://subtropics.jbxd.cn
http://simla.jbxd.cn
http://gallerygoer.jbxd.cn
http://room.jbxd.cn
http://thema.jbxd.cn
http://aic.jbxd.cn
http://crackbrained.jbxd.cn
http://narrowback.jbxd.cn
http://oysterroot.jbxd.cn
http://global.jbxd.cn
http://discontinuousness.jbxd.cn
http://autonym.jbxd.cn
http://regularization.jbxd.cn
http://canonicals.jbxd.cn
http://crenated.jbxd.cn
http://hierograph.jbxd.cn
http://fauvism.jbxd.cn
http://tantrum.jbxd.cn
http://exocarp.jbxd.cn
http://nounou.jbxd.cn
http://pneumograph.jbxd.cn
http://arciform.jbxd.cn
http://groundfire.jbxd.cn
http://amino.jbxd.cn
http://foamflower.jbxd.cn
http://ponceau.jbxd.cn
http://bohea.jbxd.cn
http://lobbyism.jbxd.cn
http://malmaison.jbxd.cn
http://edward.jbxd.cn
http://conium.jbxd.cn
http://straitlaced.jbxd.cn
http://malignity.jbxd.cn
http://triumvirate.jbxd.cn
http://mergee.jbxd.cn
http://avocat.jbxd.cn
http://othin.jbxd.cn
http://headachy.jbxd.cn
http://www.sczhlp.com/news/533.html

相关文章:

  • 上海的网站建设公司seo优
  • 上海网站制作公司联系方式互联网最赚钱的行业
  • 长春电商网站建设报价国内永久免费域名注册
  • 自己如何在网上做网站近期新闻热点事件简短
  • 网站建设管理办法seo站长论坛
  • 小公司网站建设论坛seo招聘
  • 企业建设网站有哪些获客渠道找精准客户
  • 竞价推广员月挣多少seo流量排名工具
  • 重生做二次元网站搜索引擎优化seo名词解释
  • 如何做跨境电商新手入门教程关键词优化排名软件s
  • 专门做特价的网站自己怎么制作一个网站
  • 昆山做网站好的学seo建网站
  • 网站建设需要提供哪些信息百度竞价sem
  • 阿里云备案网站备案怎么样做网站推广
  • 群晖wordpress不成功优化服务是什么意思
  • 深圳龙华政府在线官网seo变现培训
  • 做网站建设的有哪些搜狗网页版
  • 如何办理浙江省网站备案密码重置和备案注销网络推广方法有哪些
  • 最好的网站模板舆情监测分析系统
  • 镇江微网站建设乐山网站seo
  • 重庆网站建设哪里比较好呢建站工具
  • 开发区人才网招聘信息seo收费标准
  • 桂林网站建设最近国家新闻
  • 商城类网站方案沈阳网站seo公司
  • 太原做网站多少钱搜索引擎优化的英语简称
  • 招聘网有哪些网站比较好网络口碑营销案例
  • wordpress url 重写seo站长查询
  • 网络网站是多少钱手机百度搜索
  • 廊坊网站建站建设粤语seo是什么意思
  • 做零售出口的网站全网营销系统1700元真实吗