Java中线程的使用
- Java中实现多线程的常用方式有两种:
1.继承Thread类
2.实现Runnable接口
继承Thread类
class MyThread extends Thread{
@Override
public void run(){
for(int i = 0; i < 20; i++){
System.out.println("-----------MyThread");
}
}
}
public class Test{
public static void main(String[] args){
MyThread myThread = new MyThread();
myThread.start();
for(int i = 0; i < 20; i++){
System.out.println("------------Test");
}
}
}
上述代码讲解:
★多写一点循化,就会发现他是交替执行的
- 当前程序中有两个线程,一个是主线程,即main方法,主线程完成了两件事
- 1.开启了一个子线程MyThread
- 2.执行一个循环操作
- 因为子线程开启后和主线程在竞争CPU资源,交替执行,所以会看到交叉打印两个循环信息的结果
- 注意:开启子线程是通过调用线程对象的start()方法来完成,一定不能调用run()方法,调用run()方法是普通的方法调用,相当于在主线程中顺序执行两个循环
实现Runnable接口
class MyRunnable implements Runnable{
@Override
public void run(){
for(int i = 0; i < 20; i++){
System.out.println("------------MyRunnable");
}
}
}
public class Test{
public static void main(String[] args){
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
for(int i = 0; i < 20; i++){
System.out.println(""---------Test:);
}
}
}
上述代码讲解:
★多写一点循化,就会发现他是交替执行的
- MyRunnable的使用与MyThread略有不同,MyThread相当于定义了线程业务逻辑,它本身并非不是线程对象,所以还需要实例化Thread对象,然后将MyRunnable对象赋给Thread对象。
- 这样Thread对象就知道了他要完成的业务逻辑,再通过Thread对象的start()方法来启动该线程
- 运行结果会交叉显示相应信息