常用API-多线程

本文介绍了多线程的概念,包括并行和并发的区别,以及线程和进程的定义。重点讲解了Java中如何使用Thread和Runnable接口创建线程,以及start方法和run方法的区别。推荐使用Runnable接口以保持代码灵活性。
摘要由CSDN通过智能技术生成

1.为什么有多线程?

       目前学习技术--可以完成项目--目前编写的代码都是从前往后顺序执行---这样会出现问题

       ---执行效率低

       当前面的代码执行过程中遇到阻碍--停顿执行--后面的业务代码也必须等着

       问题:所有的代码排成一队,相互等待执行

       解决方法:能不能把队中没有联系的分开,排成多对,一起执行------java提供了技术--多线程机制

    2.并行和并发概念

       并行:指两个或者多个事件在同一时刻一起运行【同时】

       并发:指两个或多个事情在同一时间段内交替运行

       顺序执行:A执行完B才执行,等B执执行完C才执行......

    3.线程和进程概念

       进程:计算机系统中一个独立应用程序就是一个进程【之前】,当前优化程序执行【一个应用

程序可能包含多个进程】,计算机对于每一个进程分配相应资源【cpu+内存】

       线程:负责进程执行过程,是进程一个执行单元,一个进程可以包含多个线程,至少包含一个

主线程。

             多个线程共享进程资源。

    4.任何进行线程调度和资源分配

       进程获取操作系统分配资源---一个进程一份

       一个进程中可以有多个线程---多个线程共享进程资源

       进程就会把资源使用时间线上切割时间片

       线程获取时间片的方式(线程调度的方式):

          平均分配调度

              按照线程个数,平均分配资源使用时间

          抢夺调度

              给每一个线程分配设置优先级,优先级高获取资源概率高,如果优先级一样,随机分配给对应的线程

       大部分都是使用抢夺方式:操作系统  java程序

    5.java提供的API

       Java中提供了一个类表示线程:Thread

          java.lang包  线程:程序中可执行的线程,Java程序中允许并发运行多个线程

          创建一个线程

             编写一个类,继承Thread类,重写Thread的run方法--run方法下就是线程执行业务资源

          使用:

             创建线程对象,使用线程对象调用start()启动线程

       提供了一个接口创建线程:Runnable

             实现了runnable,不能说明当前资源是一个线程,他是遵循线程协议,表示当前资源可以 

 被线程加载,作为线程实现的功能使用

             创建线程的方式:创建一个类,实现runnable接口,重写run方法

       备注:java中本身就存在至少两个线程main主线程+垃圾回收线程

            线程启动:是线程对象调用start方法,不是run方法,run方法是线程自己调用


    6.探索线程中的那些事情

      1)start方法和run方法

         run方法,属于runnable接口,Thread类重写了run方法   Thread才有线程可以加在执行的资

 源,因为线程自动调用执行run方法

         start方法,用于线程启动,Thread线程类才拥有,使数组将每一个创建的线程进行存储

      2)继承Thread和实现Runnable接口应该用哪一个好

         Thread:

          优势:继承Thread直接将业务功能类变成线程,直接进行线程相关操作
 
          劣势:一旦发生继承,就不能再进行扩展继承其他类,继承发生后,就只一个线程类,不太

       方便用作其他功能

         Runnable:

          优势:发生实现关系,线程资源和线程执行分开,资源类可以做出了线程以外的其他事情

                发生实现,强制重写run方法  很强的提示性

                发生实现,还可以继承其他的类,扩展功能

                可以多个线程共用一个资源对象

          缺点:需要创建线程Thread对象进行加入线程使用

       总结:推荐使用实现runnable接口的方式创建线程

      3)探索Runnable接口和Thread类

          Runnable:

             提供了一个run方法,用于被线程调用,线程调用资源的协定

          Thread:

             属性常量:

                 MAX_PRIORITY  最大优先级  10

                 MIN_PRIORITY  最小优先级  1

                 NORM_PRIORITY  默认优先级  5

             构造方法

                 Thread()  创建默认名字的线程对象构造方法  Thread-索引

                 Thread(String name)  创建一个指定线程名字的线程对象

                 Thread(Runnable target)  创建一个加载对应资源对象的线程

                 Thread(Runnable target,String name) 创建一个传入资源对象和线程名字的线程对象

            实现Runnable

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值