Java多线程(一)

多线程是重点,听身边有过面试经历的同学说起过,就算我们不是为了面试,我们也得学好它吗,记得有句古话:书到用时方恨少。这句话送给每一位努力学习的人,加油。


在Java的JDK开发包中,实现Java多线程有两种方式:

(1)使用继承Thread类;

(2)实现Runnable接口。

注意:public class Thread implements Runnable 说明Thread类已经实现了Runnable接口,他们之间具有多态的关系。


为什么提供了这两种实现多线程的方法,一个不够用吗?

大家知道,面向对象中,具有三大特性:封装、继承、多态。并且在Java中,继承是单根继承机制,也就是说,一个子类只能有一个直接的父类。如果我们在实现一个类的时候,使它继承了一个类,那么我们就无法再根据它继承Thread类了,所以第一种方式创建多线程最大的局限就是不支持多继承。所以,第二种方式,就完全可以解决第一种问题带来的弊端。


下面是一个简单的创建多线程的例子:

public class Mythread extends Thread{
    @Override 
    public void run(){
        super.run();
        System.out.println("MyThread!");
    }
}
//运行类
public class Run{
    public static void main(String[] args){
        Mythread mythread = new Mythread();
        mythread.start();//具有两个作用:1.启动一个线程 2.调用run方法
        //从调用start之后,才开始创建一个新的线程,main线程顺序执行,
        //新创建的线程执行run方法中的代码。
        System.out.println("运行结束!");
    }
}

代码的运行结果和代码的执行顺序或调用顺序是无关嘚。如果多次调用start方法,则会出现 IllegalThreadStateException异常。
这里需要说明一下调用 start方法的原理:当调用此方法时,会通知线程规划器,此线程已经准备就绪,等待调用线程对象的 run方法,这个过程其实就是让系统安培一个时间来调用Thread对象的run方法,使线程得到运行,启动线程达到异步执行的效果。

实现Runnable接口来创建多线程
步骤:实现Runnable接口,目的是实现Runnable接口中的run方法
         创建一个Thread对象,并将实现的Runnable接口的对象,传递给Thread构造器。
         调用Thread对象的 start方法。
代码演示如下:
public class MyRunnable implements Runnable{
    @Override
    public void run(){
        System.out.println("当前线程的名字为:"+Thread.currentThread().getName());
        System.out.println("运行中!");
    }
}

//运行类代码
public class Run{
    public static void main(String[] args){
        Runnable runnable  = new MyRunnable();
        Thread thread = new Thread(runnable);
        thread.setName("Runnable-Thread");
        thread.start();
        System.out.println("main线程运行结束");
    }
}

前面我们说过,Thread类本身也实现了Runnable接口,也就意味着:构造函数Thread(Runnable target)不光可以传入Runnable接口的对象,还可以传入一个Thread类的对象,这样完全可以将一个Thread对象中的run方法交给其它线程进行调用。

          


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在路上0616

随缘吧打赏与否还是会坚持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值