线程创建------继承Thread类与实现Runnable接口

一:线程

线程是一个进程中一段独立的控制流,一个进程可以有若干个线程。多进程设计中,各个进程间的数据块是独立的,他们之间的交流是通过信号,管道方式进行的。在线程设计中,各个线程之间不一定是独立的,同一个程序中的各个线程可以共享程序段、数据段等资源java中的同步机制有解决了线程之间数据完整性问题。

二:线程的创建

1:继承Thread类

直接实例化Thread类或者定义一个继承Thread类,重写run()方法,调用start()方法启动线程

/**
 * 继承Thread类
 * @author fjx
 *
 */
public class TestThread extends Thread{

    public TestThread(String name){
        super(name);
    }

    /**重写run()方法**/
    @Override
    public void run() {
        System.out.println("当前线程名称为:"+Thread.currentThread().getName());
    }

    public static void main(String[] args) {
        Thread testThread=new TestThread("new Thread");//实例化Thread类
        //启动线程   注:一个Thread类的start()方法不能让一个实力进行多次调用,否则会出现:IllegalThreadStateException异常
        testThread.start(); 
    }

}
输出结果:
主线程名称为:main
当前线程名称为:new Thread
2:实现Runnable接口

实例化实现Runnable接口的类,使用Thread构造方法对Thread对象进行创建并实例化,最后调用Thread实例中的start()方法启动线程。

/**
 * 实现Runnable接口
 * @author fjx
 *
 */
public class TestRunnable implements Runnable{

    /**重写run()方法**/
    @Override
    public void run() {
        System.out.println("当前线程名称为:"+Thread.currentThread().getName());
    }

    public static void main(String[] args) {
        TestRunnable testRunnable=new TestRunnable();//实例化实现Runnable接口的TestRunnable类
        Thread thread = new Thread(testRunnable,"newRunnable");//使用构造方法对Thread进行创建并实例化 
        //启动线程   注:一个Thread类的start()方法不能让一个实力进行多次调用,否则会出现:IllegalThreadStateException异常
        thread.start();
        System.out.println("主线程名称为:"+Thread.currentThread().getName());
    }

}
输出结果:
主线程名称为:main
当前线程名称为:newRunnable
3:继承Thread与实现Runnable创建线程有什么区别

1.继承Thread类,重写run()方法,创建该类对象,调用start方法启动线程;线程任务与线程对象绑定在一起,耦合性过高,不易维护;继承Thread类创建的线程无法再继承其他类;
2:实现Runnable接口,重写run方法,创建该类对象,将该类对象作为参数传给Thread类的构造方法,再创建Thread类对象并调用start方法开启线程;线程任务在实现Runnable接口的类中完成,线程对象是Thread类对象,线程任务与线程对象分离,耦合性低,便于维护;实现Runnable接口的类必要时可以继承与业务相关的其他类;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值