Java并发:创建线程的两种方法:继承Thread类和实现Runnable接口(一)

本文介绍了Java中实现多线程的两种方式:继承Thread类和实现Runnable接口,并通过示例详细讲解了每种方法的步骤及特点。还探讨了线程的生命周期和线程安全问题。
摘要由CSDN通过智能技术生成

【1】了解进程与线程的概念

  • 进程是一个程序在其自身的地址空间中执行一次活动,是资源申请、调度和独立运行的单位。
  • 线程是进程中的一个单一的连续控制流程,一个进程可以包含一个或多个线程。
  • 如果要在一个程序中实现多段代码同时交替运行,就需要产生多个线程,并指定每个线程上要运行的程序代码段,这就是多线程。
  • 当程序运行时,就自动产生了一个线程,主函数main就是在这个线程上运行的,当不再产生新的线程时,程序就是单线程的。例如,在的博客中本文——“JAVA——package语句、class环境变量配置”中的程序就是单线程的。

【2】实现多线程的两种方法

  • 当启动程序时就自动产生了一个线程,主函数main就是在这个线程上运行的。当不再产生新的线程时,程序就是单线程的。
  • 通过查阅JDK文档的Thread类,可以发现创建多线程有两种方法:继承Thread类、实现Runable接口。
    这里写图片描述
    翻译:每个线程都有优先级。优先级较高的线程优先执行具有较低优先级的线程。每个线程可能也可能被标记为守护进程。当代码运行在某个线程中创建一个新的线程对象时,新线程的优先级初始设置为创建线程的优先级,当且仅当创建线程为守护进程时,该线程是一个守护线程。
  • 守护线程与非守护线程的相关内容,可参见网址:
    http://www.cnblogs.com/super-d2/p/3348183.html
  • JAVA中的线程是通过java.lang.Thread类来控制的,一个Thread类的对象代表一个线程,且只能代表一个线程,通过Thread类和它定义的对象,可以获取当前线程对象、获取某一线程的名称,可以实现控制线程暂停一段时间等功能。

  • 第一种创建线程的方法:继承Thread类
    两种方法的示例为:例如,一个计算大于给定值的素数的线程可以写成如下。
    这里写图片描述

  • 方法步骤总结:
    (1)定义一个类(如PrimeThread)继承Thread;
    (2)重写Thread类中的run方法,将需要被多线程执行的代码存储到该run方法当中。
    (3)建立Thread类的子类创建线程对象。
    (4)直接调用子类从Thread类继承的start方法,开启一个线程(调用该线程的run方法)。

  • 第二种创建线程的方法:实现Runable接口

    这里写图片描述

  • Thread类有一个Thread(Runnable target)构造方法,在Runable接口类中只有一个run()方法。当使用Thread(Runnable target)方法创建线程对象时,需要为该方法传递一个实现 Runnable接口的对象,这样创建的线程将调用那个实现了Runnable接口类对象中的run()方法作为其运行代码,而不再是调用Thread类中的run方法了。

  • 方法步骤总结:
    (1)定义一个类(如PrimeRun)实现Runnable接口,覆盖Runnable接口中的run方法,将线程要运行的代码存放在该run方法中;
    (2)通过Thread类建立线程对象,将Runnable接口的子类实例对象作为实际参数传递给Thread类的构造方法。

  • 两种方式区别:

    (1)继承Thread: 线程代码存放Thread子类run方法中,且该run方法被调用。
    (2)实现Runnable:线程代码存在实现了Runnable类接口的对象的run方法中,且该run方法被调用。

    </
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值