一段程序如果启动多个线程执行,同样的的程序执行时间大大缩减。
前言
如果一个程序(一个进程)启动多个线程,并发的执行程序,大大缩短执行时间。
一、进程与线程是什么?
进程:进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。
线程:线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。
二、创建步骤
1.继承Thread
代码如下(示例):
class A extends Thread{
重写run方法
}
A a = new A();
a.start();
2.实现Runnable接口
代码如下(示例):
实现Runnable接口
class A implements Runable{
重写run方法
}
A a = new A();
Thread t = new Thread(a);
t.start();
2.匿名内部类
代码如下(示例):
new Thread(new Runnable(){
public void run(){
}
}).start();
Thread t = new Thread(new Runnable(){
public void run(){
}
});
t.start();
总结
- 采用继承Thread类方式
- 优点:编写简单,如果需要访问当前线程,无需使用Thread.currentThread()方法,直接使用this,即可获得当前线程。
- 缺点:因为线程类已经继承了Thread类,所以不能再继承其他的父类。
- 采用实现Runnable接口方式:
- 优点:线程类只是实现了Runable接口,还可以继承其他的类。在这种方式下,可以多个线程共享同一个目标对象,所以非常适合多个相同线程来处理同一份资源的情况,从而可以将CPU代码和数据分开,形成清晰的模型,较好地体现了面向对象的思想。
- 缺点:编程稍微复杂,如果需要访问当前线程,必须使用Thread.currentThread()方法。