多线程——线程概述与线程的创建

本文介绍了线程的概述,包括进程、线程和多线程的概念,强调多线程能提高应用程序的使用率。接着详细讲解了如何在Java中通过继承Thread类和实现Runnable接口两种方式来创建多线程,并提供了简单的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 线程的概述

1.1进程

  • 在一个操作系统中,每个独立执行的程序都可以称为一个进程,就是一个正在运行的程序。

  • 例如在windows系统中启动任务管理器,在任务管理器面板中点击进程选项可以看到当前正在运行的程序,也就是系统所有的进程,如下图所示。
    任务管理器中的进程界面

  • CPU的高并发
    在多任务操作系统中,表面上看是进程并发执行的,比如可以一边看视频,一边聊天,但其实并运行不是并发运行的。所有的应用程序都是由CPU运行的,对于一个CPU而言同一时间只能运行一个程序,也就是只执行一个进程。系统会在某一段时间分配CPU执行一个程序,然后下一段时间再次随机给CPU分配一个程序。由于CPU运行速度很快,可以在极短的时间里告诉切换,所以给人感觉多个程序在并行。

1.2线程

  • 在一个进程内部可以有多个执行的任务运行,这每一个任务便是进程中的一个个线程。每一个进程中都至少有一个线程。进程是拥有资源的基本单位, 线程是CPU调度的基本单位。

1.3什么是多线程

  • 刚开始接触java时我们学的程序都是按照调用顺序依次往下执行的,没有两段程序交替运行的效果,这样的程序称为单线程程序。但是实际应用中我们需要多段程序代码交替运行,则需要创建多个线程,即多线程程序。即多线程是指一个进程在执行过程中产生多个单线程,这些线程在运行时相互独立,且并发执行。

1.4多线程的意义

  • 多线程的作用不是提高执行速度,而是为了提高应用程序的使用率。
  • 我们所有程序在运行时都是在抢CPU的时间片,1.2说过线程是CPU调度的基本单位,而哪个进程抢到CPU是随机的,所以多线程程序自然比单线程程序更容易抢到CPU,所以CPU运行多线程程序的时间更多一些,即提高了程序的使用率。

2.线程的创建

2.1继承Thread类创建多线程

  • 分为以下几个步骤:

    1. 创建一个类(MyThread类),继承Thread类

    2. 在MyThread类中重写Thread类的run方法。run方法里面的代码即是线程的代码。

    3. 创建一个类(Teat类),在Teat类中创建MyThread类的对象。

    4. 在Teat类中调用start方法开启线程。(注意:不要重复开启同一个线程)

代码如下所示:

 ```
 public class Test {
     public static void main(String[] args) {
     MyThread th = new MyThread();
     th.start();
 
 public class MyThread extends Thread {
     @Override
     public void run() {
         for (int i = 0; i < 99; i++) {
             System.out.println(i);
         }
     }
 }
 ```

2.2实现Runnable接口创建多线程

  • 分为以下几个步骤:

    1. 定义一个类(MyRunnable类),实现Runnable接口。

    2. 重写Runnable接口中的run方法。

    3. 创建一个类(Test2类),在该类中创建Runnable接口的子类对象。

    4. 在Teat2类中创建Thread类对象,把Runable接口的子类对象传进去

    5. 在Test2类中调用start方法开启线程。

    代码如下所示:

     ```
     public class Test2 {
         public static void main(String[] args) {
             MyRunable myRunable = new MyRunable();        
             Thread th = new Thread(myRunable);
             th.start();
         }
     }
     
     public class MyRunable implements Runnable {
         @Override
         public void run() {
             for (int i = 0; i < 99; i++) {
                 System.out.println(i);
             }
         }
     }
     ```
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值