Java多线程的引入与使用方法

本文介绍了Java中多线程的引入背景和重要性,详细讲解了线程的概念、调度策略,包括分时调度和抢占式调度,并探讨了线程的创建方式,如继承Thread、实现Runnable和Callable接口。同时,文章还提到了线程的内存共享、线程安全问题以及FutureTask在多线程中的应用。
摘要由CSDN通过智能技术生成

多线程的引入

随着个人计算机以及服务器等平台的硬件性能的增强,传统单线程任务很难做到对硬件资源的高效利用,故如今越来越多的软件在程序编写中引入多线程技术。使得在一个线程正在进行等待或费时的操作时,能有其他的线程继续执行程序中的其他功能,提高软件的响应能力或整体效率。

预备知识

概念

在学习多线程的实现方法之前,首先要了解几个概念。

  1. 进程 ,进程是一个个独立的程序,每个进程独占自己的内存空间。
  2. 线程 ,线程是进程的执行路径,一个进程至少有一个线程。

进一步来说,线程有以下特点:
—— 一个进程的几个线程之间共享一部分内存资源。
—— 每个线程都有自己独立的栈空间。
—— 每个线程之间共享堆内存。
—— 每个线程执行时调用的方法都会进入自己的栈空间。
—— 线程之间可以自由切换,并发执行。
—— 线程是在进程基础之上的进一步划分。
—— 一个进程启动之后,里面的若干执行路径又划分成若干个线程。
—— 如果一个进程没有线程了 则马上要被关闭。

  1. 并行 指两个或多个事件在同一时刻发生(同时发生)。
  2. 并发 指两个或多个事件在同一个时间段内发生。
  3. 同步 多个线程排队执行 , 效率低但是安全。
  4. 异步 多个线程同时执行 , 效率高但是数据不安全。

调度

1.分时调度

所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。

2.抢占式调度

优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性)。
Java中多线程默认使用的为抢占式调度。

3.注意事项

  1. 对于CPU的一个核心而言,某个时刻,只能执行一个线程。
  2. 而 CPU的在多个线程间切换速度相对我们的感觉要快,看上去就是 在同一时刻运行。
  3. 多线程程序并不能提高程序的运行速度,但能够提高程序运行效率,让CPU的 使用率更高。
  4. 抢占式分时调度 在切换执行的线程时,切换会消耗一定时间 在时间上相对直接排队一个一个的完成任务会更慢。
  5. 排队式 第一人 1* T 第N人 N* T )(并发式 第一人&第N人 均为N* T。

相关类或接口

1.Runnable接口

Runnable作为一个接口,其中只包含了一个抽象的run ( )方法,编写实现Runnable接口的类,需要重写抽象的run ( )方法。
实现了Runnable接口的类,在创建实例对象后,该对象就可以看做一个任务。

    static class MyTask implements Runnable{
   
        @Override
        public void run() {
   
            //任务内容
        }
    }

2.Thread类

Thread类作为Java中的线程类,其实例对象即为一条线程。

几种常见的构造方法
  1. 无参构造方法
Thread t = new Thread();
  1. 指定线程名称
Thread t = new Thread("小猪佩奇一号");
  1. 指定任务对象
public static void main(String[] args)  {
   
//传入一个匿名对象
Thread t = new Thread(new MyTask());
}
static class MyTask implements Runnable{
   
       @Override
       public void run() {
   
           //任务内容
       }
   }
  1. 指定任务对象和线程名称
public static void main(String[] args)  {
   
//传入一个匿名对象
Thread t = new Thread(new MyTask
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值