并发编程的知识体系是每个测试开发工程师都必须具备的知识体系。这是因为在测试开发的工作体系中,我们
需要去编写性能测试工具以及在服务端稳定性的体系保障下,需要使用并发编程的知识来设计我们的测试用例的场
景。在我们的智能手机以及电脑中,运行的每个应用程序我们都可以称为程序,但是在计算机的科学中我们可以把
程序=数据结构+算法,当然这部分会在后续的文章体系中会详细的介绍到。但是可以说智能手机以及电脑上运行的
程序我们都可以称呼为程序。进程是计算机运行的最小单位模式,而一般性的一个程序运行的时候都会有一个进程,
而线程是比进程更细小的一部分,可以说线程是利用进程所拥有的资源来独立的完成一项计算任务。现代的软件基本
可以说都是多线程的模式,那么多线程它是有什么优势了?它的优势具体可以汇总为如下:
下面详细的阐述在Java的技术栈中三种创建线程的方式,来学习线程的具体应用。
很多时候我们更多使用的是通过继承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接口的方式来实现这部分,那么具体的源码部分具体如下所示:
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,这个接口的方式是能够返回方法的表达式
具体的值,还是以上述的代码为案例,改造后的代码方式为:
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(); } } }
通过如上的三种方式,可以看到其实第三种方式虽然比较麻烦点,但是我个人还是比较喜欢第三种的模式,
主要是因为能够获取到表达式的返回值的信息,拿到表达式的返回值的信息后,就可以再延伸的做其他的事宜。