1.线程概述:
a.Java的main方法自身就是一个线程
b.在线程中的代码都是顺序执行
c.CPU在多个线程之间做着随机切换动作
d.CPU无论 怎么切换都要把主线程和开辟的线程的run方法中的代码执行完
e.进程包含线程,一个进程中至少有一个线程
2.线程的创建
a.实现Runnable接口
class RunImp implements Runnable{
@Override
public void run(){
//线程执行的代码
}
}
public static void main(String[] args) {
RunImp ri=new RunImp();
Thread thread=new Thread(ri);//new Thread相当于创建一个线程对象
//ri相当于传入线程要执行的代码
thread.start();//不但开启线程,并且将来要执行run方法中的代码
thread.run();//仅仅相当于通过对象调方法,而程序中真正执行的只有主线程
}
匿名内部类创建线程:(简单的需求在使用)
Runnable run=new Runnable(){//即创建了Runnable的子类又创建了该子类的对象
public void run(){
//线程要执行的代码
}
};
new Thread(run).start();
a.继承Thread类:Java只支持继承一旦Demo_02SubThread继承其它类,就无法在继承Thread类
这种方式不推荐使用
public class Demo_02SubThread extends Thread{
private static int tickets = 100;
public void run(){
System.out.println(this.getName()+"继承方式,实现线程");
}
}
public static void main(String[] args) {
//创建Thread子类对象
Demo_02SubThread sub = new Demo_02SubThread();
Demo_02SubThread sub2 = new Demo_02SubThread();
Demo_02SubThread sub3 = new Demo_02SubThread();
//子类对象,调用父类方法start
sub.start();
}
匿名内部类创建线程:(简单的需求在使用):
new Thread(){//即创建了Thread的子类又创建了该子类的对象
public void run(){
//线程要执行的代码
}
}.start();
|
|