Java基础之线程(1)

1.线程概念

2.线程状态及转换

3.Java中的线程实现

在Java的世界中,完成一个有关线程的编码,最基础的有两种方式:①extends java.lang.Thread(继承类);②implements java.lang.Runnable(实现接口)

那么此时,问题来了:上述两种方式,各有什么优缺点或者说有什么不同?

  1. Java是一种单继承、多实现的编程语言。由于这个特点,在使用继承的方式实现多线程的方式就会出现局限性:倘若这个类还需要继承其他类怎么办?
  2. 实现接口的方式会强制性的需要 重写 Runnable所定义的run()方法,而继承类方式则不强制。这种说法的确正确,但我感觉这个不同之处并没有什么实际存在的意义,毕竟我开启一个线程,总是想做一点业务处理,所以总会在run()中写一些其他的东西。

4.Java中线程有关的方法

  1. run():这个方法中的内容决定了这个线程具体是干什么的;
  2. start():这个方法会启动当前线程;

5.示例代码

/** 分别采用继承Thread类和实现Runnable接口来实现多线程
  * 主线程,程序启动入口
 **/
public class MyThread{
    public static final main(String args[]){
        MyThread1 mt1 = new MyThread1();
        MyThread2 mt2 = new MyThread2();
        mt1.start();
        new Thread(mt2).start();
    }
}
//线程一(通过继承类),作用是循环输出数字
class MyThread1 extends Thread{
    public void run() {
        super.run();
        for(int i=0;i<20;i++){
            System.out.println("MyThread1:"+i);
        }
    }
}
//线程二(通过实现接口),作用同样是循环输出数字
class MyThread2 implements Runnable{
    @Override
    public void run() {
        for(int i=0;i<20;i++){
            System.out.println("MyThread2:"+i);
        }
    }
}

上面这段代码输出的结果会是MyThread1和MyThread2不规律的出现。

小小总结一下,上面的示例代码中采用的是继承Thread类来实现的线程,其中的run()方法中为具体的任务,使用start()方法来使这个线程处于就绪状态,等待CPU的调度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值