1.引言
在学习线程之前,学习一下进程的概念是十分有比较的,那么什么是进程呢?通俗的来讲:进程可以理解为一个应用程序,比如我们打开一个VS软件,或者打开一个myeclipse软件,就产生了一个进程。那么什么是线程呢?线程可以理解为:进程中独立运行的子任务。,一个进程可以由多个线程组成(一个进程至少有一个线程)。进程,应用程序,线程的关系如下图所示:
2.Java多线程的实现
2.1 多线程的优缺点
优点: 为什么要有多线程这种技术呢?我们可以考虑一个场景,一个砖厂有2000块砖头,我们需要将1000块砖头从砖厂A运送到砖厂B,如果我们用一个人来搬砖(一次只能搬十块),可能需要4个小时,但是如果我们需要雇佣10个人来搬砖,速度就要快得多。
缺点:同样是上面那个例子,多线程我们要注意线程安全问题,比如:多个人来搬砖,如何保证只搬砖1000快,不能多,也不能少。这就要牵扯到线程安全的问题。当然,安全问题也不仅仅是这一个方面,在后面的学习中将渐渐的介绍如何各种安全问题,以及如何避免安全问题。
2.2 多线程的实现
在Java中我们实现多线程的方法有两种:
- 继承Thread类
- 实现Runnable接口
这两个方法之间的关系是:
2.3使用 Thread实现多线程技术
- 首先我们创建一个类(叫做:MyThread):注意要实现run方法
public class MyThread extends Thread{
@Override
public void run() {
System.out.println("MyThread线程启动了");
super.run();
}
}
- 在main方法中使用MyThread线程
public class app {
public static void main(String[] args) {
//创建一个线程实例
MyThread td=new MyThread();
//启动线程
td.start();
System.out.println("main主线程");
}
}
运行结果
运行结果告诉我们:
当java应用程序运行之后,默认是有一个线程的,叫做main线程。 我们前面说过进程是一个引用程序,一个进程有多个线程组成,也就是说进程至少有一个线程 上面的程序有两个线程,一个是自定义的线程,一个是main主线程 每一个线程之间的运行顺序是随机的(可以看作是随机的,但是不是完全随机的)。
2.4使用 Runnable实现多线程技术
- 创建一个类,实现Runnable接口,注意要实现run方法
public class MyThread implements Runnable{
@Override
public void run() {
System.out.println("实现了Runnable接口");
}
}
- 运行自定义的线程
public class app {
public static void main(String[] args) {
//创建一个线程实例,传入我们的接口类
Thread td=new Thread(new MyThread());
//启动线程
td.start();
System.out.println("main主线程");
}
}
- 运行结果
结果解释
要运行实现了接口的线程方法,需要使用Thread类包装一下。即:将类对象传入Thread的构造方法。然后启动该线程
3.总结
在本篇博客中主要介绍了:
- 什么是进程,什么是线程
- 线程和进程之间的关系(一个进程至少包含一个线程)
- 在Java中如何实现多线程的技术。