多线程(一)
线程:
每一个进程执行都有一个执行顺序,该顺序就是一个执行路径或者叫一个控制单元,而线程就是进程中的一个独立单元。
个人理解:JAVA中的线程就是一个继承Thread或实现Runnable接口的类,封装在run(){}中的代码。
多线程的意义:让多个代码同时运行,这里的同时运行并非真正意义上的同时运行,而是因为CPU在做着快速的切换,导致看上去是同时运行的,其实在某个时间点,只有一个线程在运行。每个线程都有获取CPU执行权的权力。
创建方式:
1.继承Thread类或实现Runnable接口。
2.Thread方式:继承Thread,复写run(),启动线程
class PrimeThread extends Thread {
long minPrime;
PrimeThread(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
然后,下列代码会创建并启动一个线程:
PrimeThreadp = new PrimeThread(143);
p.start();
Runnable接口:实现Runnable,建立子类对象,传入Thread构造函数,启动线程
class PrimeRun implements Runnable {
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
然后,下列代码会创建并启动一个线程:
PrimeRun p = new PrimeRun(143); newThread(p).start();
实现方式与继承方式的区别:
1.当某个类已经有父类了,这时无法用继续Thread方法建立线程,因为JAVA中无法多继承
2.当某个类已经有父类了,这时可以实现Runnable方法建立线程,这样既继承了父类的属性又能建立线程。
3.Runnable建立的多线程可以使用同一对象中封装的数据,而Thread要实现这样的功能必须将数据static化,但会导致数据的生命周期过长。