线程的创建方式(一)
2022/2/28 23:26:54
本文主要是介绍线程的创建方式(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
并发编程的知识体系是每个测试开发工程师都必须具备的知识体系。这是因为在测试开发的工作体系中,我们
需要去编写性能测试工具以及在服务端稳定性的体系保障下,需要使用并发编程的知识来设计我们的测试用例的场
景。在我们的智能手机以及电脑中,运行的每个应用程序我们都可以称为程序,但是在计算机的科学中我们可以把
程序=数据结构+算法,当然这部分会在后续的文章体系中会详细的介绍到。但是可以说智能手机以及电脑上运行的
程序我们都可以称呼为程序。进程是计算机运行的最小单位模式,而一般性的一个程序运行的时候都会有一个进程,
而线程是比进程更细小的一部分,可以说线程是利用进程所拥有的资源来独立的完成一项计算任务。现代的软件基本
可以说都是多线程的模式,那么多线程它是有什么优势了?它的优势具体可以汇总为如下:
- 能够快速的得到用户的响应操作,其实这在应用层的协议角度能够很好的来理解
- 软件在同一个时刻可以干很多的事,比如微信可以同时进行语音,视频,发文字等信息
- 更加合理的使用计算机的系统资源,这些资源主要是CPU的资源和内存的资源
- 任何能够很好的拆分为多个小的任务
- 提高系统的吞吐量以及软件执行的效率
下面详细的阐述在Java的技术栈中三种创建线程的方式,来学习线程的具体应用。
一、继承Thread类创建线程
很多时候我们更多使用的是通过继承Thread的类来创建线程,下面具体演示下这部分的应用,具体如下:
package com.example.blog; public class ThreadStudy extends Thread { public void add(int a,int b) { System.out.println("两个数相加之和:"+(a+b)); } @Override public void run() { add(2,3); } public static void main(String[] args) { ThreadStudy threadStudy=new ThreadStudy(); threadStudy.start(); } }
二、Runnable接口创建线程
下面我们通过继承Runnable接口的方式来实现这部分,那么具体的源码部分具体如下所示:
package com.example.blog; public class ThreadStudy implements Runnable { public void add(int a,int b) { System.out.println("两个数相加之和:"+(a+b)); } @Override public void run() { add(2,3); } public static void main(String[] args) { ThreadStudy threadStudy=new ThreadStudy(); Thread thread=new Thread(threadStudy); thread.start(); } }
三、Callable接口创建线程
除了上述两种方式外,还有第三种的方式就是接口Callable,这个接口的方式是能够返回方法的表达式
具体的值,还是以上述的代码为案例,改造后的代码方式为:
package com.example.blog; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public class ThreadStudy implements Callable<Integer> { public int add(int a, int b) { return a+b; } @Override public Integer call() throws Exception { return add(2,3); } public static void main(String[] args) { ThreadStudy threadStudy=new ThreadStudy(); FutureTask<Integer> futureTask=new FutureTask<Integer>(threadStudy); Thread objThread=new Thread(futureTask); objThread.start(); try{ System.out.println("返回值的信息是:"+futureTask.get()); }catch(Exception e){ e.printStackTrace(); } } }
通过如上的三种方式,可以看到其实第三种方式虽然比较麻烦点,但是我个人还是比较喜欢第三种的模式,
主要是因为能够获取到表达式的返回值的信息,拿到表达式的返回值的信息后,就可以再延伸的做其他的事宜。
这篇关于线程的创建方式(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)