线程的创建方式(一)
并发编程的知识体系是每个测试开发工程师都必须具备的知识体系。这是因为在测试开发的工作体系中,我们
需要去编写性能测试工具以及在服务端稳定性的体系保障下,需要使用并发编程的知识来设计我们的测试用例的场
景。在我们的智能手机以及电脑中,运行的每个应用程序我们都可以称为程序,但是在计算机的科学中我们可以把
程序=数据结构+算法,当然这部分会在后续的文章体系中会详细的介绍到。但是可以说智能手机以及电脑上运行的
程序我们都可以称呼为程序。进程是计算机运行的最小单位模式,而一般性的一个程序运行的时候都会有一个进程,
而线程是比进程更细小的一部分,可以说线程是利用进程所拥有的资源来独立的完成一项计算任务。现代的软件基本
可以说都是多线程的模式,那么多线程它是有什么优势了?它的优势具体可以汇总为如下:
- 能够快速的得到用户的响应操作,其实这在应用层的协议角度能够很好的来理解
- 软件在同一个时刻可以干很多的事,比如微信可以同时进行语音,视频,发文字等信息
- 更加合理的使用计算机的系统资源,这些资源主要是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();
}
}
}
通过如上的三种方式,可以看到其实第三种方式虽然比较麻烦点,但是我个人还是比较喜欢第三种的模式,
主要是因为能够获取到表达式的返回值的信息,拿到表达式的返回值的信息后,就可以再延伸的做其他的事宜。
欢迎关注微信公众号“Python自动化测试”