——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
我们知道,进程就是一个正在执行中的程序,而线程就是一个进程中的多个执行路径。线程通过抢CPU来运行。
线程的定义方式有两种:
第一种是通过继承Thread类。
1、创建一个类继承Thread类;
2、重写 run 方法;
3、调用 start 方法开启线程。
public class ThreadTest {
public static void main(String[] args){
a aa=new a();
aa.start();
b bb=new b("keey");
bb.start();
}
}
class a extends Thread{
public void run(){
for(int i=0;i<200;i++){
System.out.println(Thread.currentThread().getName()+" "+i);
}
}
a(){
super("mile"); //调用 Thread 类的构造方法为线程自定义名称
}
}
class b extends Thread{
public void run(){
for(int i=0;i<200;i++){
System.out.println(this.getName()+i+"----");
}
}
b(String name){
super(name);
}
}
第二种是通过实现Runnable接口。
1、创建一个类实现Runnable接口;
2、重写 run 方法;
3、通过 Thread 类建立线程对象;
4、将接口子类对象作为实际参数传给 Thread 类构造函数;
5、Thread 类的 start 方法开启,并调用接口 run方法。
public class ThreadTest2 {
public static void main(String[] args){
c cc=new c();
new Thread(cc).start();
d dd=new d();
new Thread(dd).start();
}
}
class c implements Runnable{
public void run(){
for(int i=0;i<100;i++){
System.out.println(111111);
}
}
}
class d implements Runnable{
public void run(){
for(int i=0;i<100;i++){
System.out.println("AAA");
}
}
}
两方法的区别:
实现方式的好处:避免了单继承的局限性。
定义线程时,一般建议使用实现方式。
继承Thread:线程代码存放 Thread 子类 run 方法中。
实现 Runnable:代码存放接口子类 run 方法中。