多线程的使用以及介绍

多线程的认识以及使用策略(第2章)

继续上一章
我们讲到了多线程的创建方式以及介绍了多任务,进程和线程的认识,也通过一些小的案例来对创建线程了解到了一些使用方法,那么我们接着上一章接着讲:
Callnble 的创建以及使用(扩展一般不会怎么使用到理解即可)
前面我们讲到多线程的使用创建的方式一共有3种,分别是继承Thread 和实现我们的Runable 还有最后一种没有介绍那就是callnable 的创建;下面我们通过一个简单的例子来实现一下Callable 的实现方式:
我们先把原先的(网络图片下载到iead的线程案例);搬到我们的使用的Callable 实现的线程类中为了提高一些对比我们将上一次案例的代码重新展示一下
图一
在这里插入图片描述
在这里插入图片描述
现在我们需要使用到Callable 那么会出现那些变化呢?
首先我们的Callable线程实现需要先继承Callable自己的实现类
在这里插入图片描述

原先我们实现的run 方法名需要修改为我们Callable重写的call方法并且需要添加一个返回值类型对应我们继承的callable方法的返回值类型 (返回值类型根据实际情况设置没有强制要求使用Boolean判断)
在这里插入图片描述
然后我们原先的创建的下载器不变
在这里插入图片描述

这里我们的Callable需要先开启一个Executors 服务 并且提交我们自己创建的3条线程服务 然后使用get 方法 获取结果 最后关闭我们的服务就可以对查看我们的案例是不是启动成功;

打印结果:
在这里插入图片描述

这里我解释一下我使用3条线程的网上原文的路径可能是同一个…所以文件生成的也是一张1图片;
在这里插入图片描述

到这里我们的线程的创建方法的结束了;
下面我们了解一下什么是线程的静态代理模式
下面我们代码带各位了解一下什么是静态代理模式;
我们先在cllass类中创建一个接口方法并且实现这条方法
在这里插入图片描述

然后我们通过创建一个代理的class类 使用我们之前类创建的实现接口
在这里插入图片描述
可以自定义一些方法 添加到代理类中 添加原先创建的构造方法 和我们自己代理类创建的方法
然后在主程序入口mian方法下 new 我们代理的对象中 打印我们的输出的内容
在这里插入图片描述
在这里插入图片描述
通过上面的案例是不是对静态代理有了一些了解简单来说就是将我们设置的方法
代入到我们的代理类中调用 通过代理对象可以将我们的设置的方法代入到代理类中;
然后打印输出;

线程状态(线程的生命周期)
说到线程的生命状态这里我们使用图片概括线程的生命周期
在这里插入图片描述
线程从线程的 创建线程 new Thread 创建线程—>>>到就绪状 释放cpu资源 在到—>>>>线程阻塞 一般是线程中使用了sllep 和wait 同步锁方法的时候会导致线程阻塞 ---->>在接着到线程的运行---->>> 最后到线程的死亡 也就是结束线程;一共分为5大部分;

如何在程序中停止线程
停止线程是在多线程开发中很重要的技术点,掌握此技术可以对线程的停止进行有效的处理, 停止线程在 Java 语言中并不像 break 语句那样干脆,需要一些技巧性的处理;
一般来说目前不推荐在线程中使用JDK中的一下停止方法如stop();和desroty();方法,
一般来说建议让线程自己停下来,所以我们需要在使用中需要一个标志位变量来对线程进行停止操作; 如:变量 flag=false;
**下面我将使用一个小的案例来加深大家对于线程停止的操作方法:
在这里插入图片描述
首先我们的线程需要实现Runnable 然后我们重写run 线程方法 设置好boolean 的作为我们程序执行的标识符 ; 在设置一个方法当flag=false 线程会输出停止,然后通过一个循环来测试我们的设置的标志位会不会提示我们关闭停止线程

第2章结束…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值