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

嘉兴企业网站开发高档网站建设公司

嘉兴企业网站开发,高档网站建设公司,网站建设准备资料,网上有哪些购物网站#x1f352;前言 本文将从以下几方面来展开对Thread的介绍。 1.线程创建 2.线程中断 3.线程等待 4.线程休眠 在前面的文章中#xff0c;已经总结了关于Thread的一些理解。 在阅读本文之前#xff0c;最好对其有一些基础的了解。 文章链接: 【JavaSE】进程是什么#xff1f…前言 本文将从以下几方面来展开对Thread的介绍。 1.线程创建 2.线程中断 3.线程等待 4.线程休眠 在前面的文章中已经总结了关于Thread的一些理解。 在阅读本文之前最好对其有一些基础的了解。 文章链接: 【JavaSE】进程是什么 文章链接: 【JavaSE】初识线程线程与进程的区别 文章链接: 【JavaSE】Thread类中run和start的区别 文章目录 前言线程的创建1.继承 Thread 类2.实现Runnable接口3.匿名内部类4.匿名内部类创建 Runnable ⼦类对象5.lambda 表达式创建 Runnable ⼦类对象 线程中断1.自己设定条件**缺点** 2.使用interrupt和isInterrupted方法 线程等待✍线程休眠 线程的创建 1.继承 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();while (true){System.out.println(hello main);Thread.sleep(1000);}} }2.实现Runnable接口 class MyRunnable implements Runnable{Overridepublic void run() {while (true){System.out.println(hello thread2);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}} }public class demo2 {public static void main(String[] args) throws InterruptedException {Thread t new Thread(new MyRunnable());t.start();while (true){System.out.println(hello main2);Thread.sleep(1000);}} }3.匿名内部类 public class demo3 {public static void main(String[] args) throws InterruptedException {Thread t new Thread(){Overridepublic void run() {while (true){System.out.println(hello thread3);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}};t.start();while (true){System.out.println( hello main);Thread.sleep(1000);}} }4.匿名内部类创建 Runnable ⼦类对象 public class demo4 {public static void main(String[] args) throws InterruptedException {Thread t new Thread((Runnable) () -{while (true){System.out.println(hello thread4);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}});t.start();while (true){System.out.println( hello main4);Thread.sleep(1000);}} }5.lambda 表达式创建 Runnable ⼦类对象 public class demo5 {public static void main(String[] args) {Thread t new Thread(()-{while (true){System.out.println(hello thred5);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}});t.start();while (true){System.out.println( hello main5);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}} }线程中断 终止线程在Java中所有的终止程序都只是“提醒建议”。真正的是否结束都是由线程本体 自己决定的。 在系统原生的线程中是有办法让别的线程强制终止的但这种设定不太好所以Java没有采纳 主要原因还是线程之间的调度是随机的。 1.自己设定条件 之所以可以结束是因为thread线程外面写了isRunning这样的条件所以才能控制 如果thread代码不这样写那么thread都会继续执行不会在意外面的条件 最终决定权还是在thread手中。 private static boolean isRunning true;public static void main(String[] args) {Thread thread new Thread(()-{while (isRunning){//自己书写条件控制线程的结束System.out.println(hello thread);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}});thread.start();try {Thread.sleep(3000);//三秒之后 } catch (InterruptedException e) {throw new RuntimeException(e);}isRunning false;//三秒之后设置 条件 终止线程System.out.println(end Thread);}运行结果如下 缺点 2.使用interrupt和isInterrupted方法 public static void main(String[] args) throws InterruptedException {Thread t new Thread(()-{// t.isInterrupted();while (!Thread.currentThread().isInterrupted()){System.out.println(hello thead);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}});t.start();Thread.sleep(3000);t.interrupt();}运行程序 发现3s之后线程确实是结束了。但是是以抛出异常中断的情况结束 这样会使结果不那么美观。那么接下来就要解决这样的问题。 解决方法 我们不抛出异常而是打印出异常。 继续运行看看结果是怎样的。 我们可以看到结果中打印出了异常而线程并没有结束 我们确确实实使用了interrupt方法使标志位修改成了true了那为什么线程还会继续执行呢 线程等待 因为线程是随机调度的为了解决这样的问题从而引入了线程等待。 使用join public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(()-{for (int i 0; i 3; i) {System.out.println(hello t1);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}});Thread t2 new Thread(()-{for (int i 0; i 3; i) {System.out.println(hello t2);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}});t1.start();t2.start();t1.join();//加入条件t2.join();//System.out.println(end main);}运行结果如下 main线程调用t1.join() t2.join(),t1 t2 继续执行 main线程等待 t1和t2谁先结束这是未知的 而t1 和 t2 比main先结束这是已知的。 如果想要定义t1和t2的先后结束顺序 就在对应的t1或t2线程内调用join()方法 join还有一个带参数的方法 不带参数的join方法就是所谓的“死等” ✍线程休眠 线程休眠sleep控制的是“线程休眠的时间”而是不是“两个代码执行的间隔时间” 举例 public static void main(String[] args) throws InterruptedException {System.out.println(System.currentTimeMillis());Thread.sleep(1000);System.out.println(System.currentTimeMillis());}由打印结果可以看出这里并不是精准的1000 此处sleep是指线程阻塞的时间在这个时间段内是无法抢占CPU的执行权的 而时间结束线程由阻塞状态变为就绪状态 但这并不意味着它立即就能到CPU上去执行。 以上就是本文所有内容如果对你有帮助的话点赞收藏支持一下吧
http://www.hkea.cn/news/14281981/

相关文章:

  • 宁波好品质品牌网站设计哪家好电脑微信公众号登录入口
  • 辽源网站建设设计h5网站开发培训哪里好
  • 怎么注册微网站吗虚拟主机评测
  • 机械设备网站建设福州阳楠科技网站建设有限公司
  • 做国际网站每年要多少钱网页视频提取软件
  • 好买卖做网站阿里云卸载wordpress
  • 做一个电商网站多少钱中展建设股份有限公司网站
  • 求个网站20213d建模软件有哪些
  • 企业建站做网站路由器组网怎么设置
  • 网络营销站点页面设计原则富阳网站建设怎样
  • 网站功能建设与栏目划分免费国内ip
  • 创建网站 优帮云地方网站做哪些内容
  • 官方网站开发用什么语言太原网站制作多少钱
  • 猎奇网站源码网站排名软件下载
  • 济南的企业网站手机网站怎么做SEO优化
  • 2小时wordpress建站鸿星尔克网络营销
  • ftp修改网站内蒙古住房和城乡建设部网站
  • 免费网站建设合同书网站制作高手
  • 深圳网页网站设计做网站的升级人
  • 茂名手机网站制作网站关闭流程
  • 简易的网站建设网站联系我们 怎么做地图
  • 合肥网站推广优化杭州公司注册地址可以是住宅吗
  • 网站锚文本使用查询适配移动网站
  • 创意图案设计网站网站外链
  • 我要啦免费统计怎么做网站win7 iis创建网站
  • 网站建设怎么开票网站页面架构
  • 做兼职调查哪个网站好贵州软件制作
  • 机关网站建设前期准备工作免费无网络游戏大全
  • 哪些网站做高尔夫旅游电子商务网站建设作业案例
  • 网站方案设计与论证家具设计ppt