一般电脑只有一个处理器,好在电脑的处理器运行速度很快,使用Thread类的对象,处理器会轮流处理它们,这样可以充分利用资源。
示例理解:
这张图片每次的运行结果不同,因为电脑处理器都是根据电脑的当前情况把处理器转向某个对象
public class SpeakEele extends Thread {
public void run(){ //继承Thread的类必须重写run方法
for(int i=0;i<20;i++){
System.out.print("大象"+i);
if(i!=0&&i%3==0){
System.out.println();
}
}}
}
public class SpeakCar extends Thread{
public void run(){
for(int j=0;j<30;j++){
System.out.print("车"+j);
if(j!=0&&j%3==0){
System.out.println();
}
}
}
}
public class Example11_1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SpeakEele speakEele=new SpeakEele();//new对象,只占内存,但是没有开始运行
SpeakCar car=new SpeakCar();
speakEele.start(); //到这里调用start才是开始,就绪状态,等待CPU处理它
car.start();
for(int k=0;k<30;k++){
System.out.print("主人"+k);
if(k!=0&&k%3==0)
{
System.out.println();
}
}
}
}
12-2使用Thread类创建线程
创建的类不是直接继承Thread类,而是接口Runnable,重写里面的方法,再使用Thread类创建对象,把要实现的目标放进去,再使用start()启动。
package Example12_1;
public class TargetEelepht implements Runnable{//这次是实现接口
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<28;i++){
System.out.print("大象"+i);
if(i%3==0)
System.out.println();
}
}
}
package Example12_1;
public class TargetCar implements Runnable{//这次是实现接口
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<28;i+