一、多线程编程简介
1、为什么需要多线程编程
合理利用CPU的空闲时间,来提高程序的性能。
2、进程和线程的关系
一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。
二、多线程开发简单示例
在烧水的同时干点儿别的事情!此处引入了异步操作,我们可以在等待水被烧开的这段时间内做一些其它的事情,如洗漱、看报纸。这样一来,当完成所有需要完成的事儿时,我们的时间节省了很多!
三、Java实现多线程的基本方式
多线程最基本的实现方式有两种:继承Thread类和实现Runnable接口。此处我们先简单介绍,在后面的文章中我们逐渐深入。Runnable接口中内容很简单,只有一个抽象方法:public abstract void run();而且Thread类也是实现了Runnable接口,此处说明如果想要用实现Runnable接口这种方式,必须得借助Thread来实现。但为什么要这样设计呢?我们知道Java是没有多重继承的,所以如果我们采用继承Thread类的方式来实现多线程,那个这个类就不能在继承别的类了,这显然有些时候不太方便,所以我们可以采用实现Runnable接口。
1、实现Runnable接口
- public class MyThread implements Runnable{
- @Override
- public void run() {
- for(int i=0; i<20; i++){
- System.out.println(Thread.currentThread().getName()+"-"+i);
- }
- }
- public static void main(String[] args) {
- Thread t1 = new Thread(new MyThread());
- Thread t2 = new Thread(new MyThread());
- t1.start();
- t2.start();
- }
- }
public class MyThread implements Runnable{
@Override
public void run() {
for(int i=0; i<20; i++){
System.out.println(Thread.currentThread().getName()+"-"+i);
}
}
public static void main(String[] args) {
Thread t1 = new Thread(new MyThread());
Thread t2 = new Thread(new MyThread());
t1.start();
t2.start();
}
}
2、继承Thread类
- public class MyThread extends Thread{
- @Override
- public void run() {
- for(int i=0; i<20; i++){
- System.out.println(Thread.currentThread().getName()+"-"+i);
- }
- }
- public static void main(String[] args) {
- new MyThread().start();
- new MyThread().start();
- }
- }