首页 > 电脑专区 > 电脑教程 >

创建线程的方法有哪些

来源:互联网 2023-02-20 17:08:46 345

线程的六大状态、基于代码实战的线程创建及六个常用方法BL7办公区 - 实用经验教程分享!

创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

方法/步骤

  • 1. 进程和线程的简介BL7办公区 - 实用经验教程分享!

    (1)进程的概念BL7办公区 - 实用经验教程分享!

    1)进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。BL7办公区 - 实用经验教程分享!

    2)进程中所包含的一个或多个执行单元成为线程。进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。BL7办公区 - 实用经验教程分享!

    3)线程智能属于一个进程并且它智能访问该进程所拥有的资源。当操作系统创建一个进程后,该进程会被申请一个名为主线程或首要线程的线程。BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

  • (2)线程的概念:BL7办公区 - 实用经验教程分享!

    一个线程是进程的一个顺序执行流。同类的多个线程共享一块内存空间和一组系统资源,线程本身有一个供程序执行的堆栈。线程在切换时负荷小。因此,线程成为轻负荷进程。一个进程中可以有多个线程。BL7办公区 - 实用经验教程分享!

  • (3)进程和线程的区别:BL7办公区 - 实用经验教程分享!

    1)地址空间:进程的各个线程,它们共享进程的地址空间,而进程有自己独立的地址空间。BL7办公区 - 实用经验教程分享!

    2)执行速度:线程的切换速度要比进程快的多。BL7办公区 - 实用经验教程分享!

    3)相互依赖上:进程是资源分配和拥有的单位,同一个进程内的线程共享进程资源。BL7办公区 - 实用经验教程分享!

    4)线程是处理器调度的基本单位,但进程不是。BL7办公区 - 实用经验教程分享!

    5)二者皆可并发执行。BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

  • (4)线程的适用场合:BL7办公区 - 实用经验教程分享!

    适用于一个程序中需要多个任务同时执行,此时可以借助多线程来完成这个任务。BL7办公区 - 实用经验教程分享!

  • 2. 线程的状态:BL7办公区 - 实用经验教程分享!

    (1)线程的六大状态简介:BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    NEW:线程刚创建BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    RUNNABLE:在JVM中正在运行的线程BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BLOCKED:线程处于阻塞状态,等待监视锁,可以重新进行同步代码块中执行BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    WAITING:等待状态BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    TIMED_WAITING:调用sleep() join() wait()方法可能导致线程处于等待状态BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    TERMINATED:线程执行完毕,已经退出BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

  • (2)线程的六大状态图:BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

  • (3)线程的六大状态转换过程详解:BL7办公区 - 实用经验教程分享!

    1)当线程继承Thread或者实现了Runnable创建了线程对象后,当new线程对象过后线程就进入了初始的状态。BL7办公区 - 实用经验教程分享!

    2)当线程对象调用了start()方法的时候,线程启动进入可运行的状态。BL7办公区 - 实用经验教程分享!

    3)线程进入可运行状态后,如果逻辑完成那么线程将会终结,如果没有执行完毕中间JVM分配时间片用完,将进入可运行状态,一旦线程被JVM选中则立即执行。BL7办公区 - 实用经验教程分享!

    4)运行状态的情况比较复杂BL7办公区 - 实用经验教程分享!

  • 第一:线程如果执行run() main()方法结束后,完成逻辑,线程就进入TerminatedBL7办公区 - 实用经验教程分享!

    第二:当线程调用sleep()或者join()方法就会进入Blocked状态,但是要注意的是阻塞的线程是不释放当前所占有的系统资源,当sleep()结束或者join()等待其他线程来到,当前线程则进入Runnable状态等待JVM分配资源。BL7办公区 - 实用经验教程分享!

    第三:当线程进入Runnable状态,但是还没有开始运行的时候,此时发现需要的资源处于同步状态synchronized,这个时候线程将会进入Timed_ waiting状态,JVM会使用队列对这些线程进行控制,既先进行Time waiting的线程会先得到JVM资源进行执行进入WaitingBL7办公区 - 实用经验教程分享!

    第四:如果处于Runnable的线程调用yield()让出JVM资源,那么就会进入New状态和其他New状态线程进行竞争重新进入RunnableBL7办公区 - 实用经验教程分享!

    第五:如果当前线程调用wait()方法,则当前线程进入Timed_waiting但是这个时候当前线程会释放所占有的JVM资源,进入这个状态过后是不能自动唤醒的,必须调用notify()或者notifyAll()方法,线程进入Waiting。BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

  • 3. 线程的创建和APIBL7办公区 - 实用经验教程分享!

    线程的创建有两种方法,具体见下:BL7办公区 - 实用经验教程分享!

    (1)第一种方法:BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    继承Thread类BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    重写run方法BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    实例化线程,调用start方法启动线程BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

  • 代码实例:BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

  • (2)第二种方法:BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    实现Runnable接口BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    实现run方法BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    创建线程,将Runnable的实例传入并启动线程(Runnable的实例需要借助Thread类)。BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

  • 代码实例:BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

  • 4. 线程的常用方法讲解及APIBL7办公区 - 实用经验教程分享!

    (1)获取当前的线程:Thread.currentThreadBL7办公区 - 实用经验教程分享!

    1)获取运行当前代码片段的线程BL7办公区 - 实用经验教程分享!

    代码实例:BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

  • 2)获取当前现成的其它线程信息,方法如下:BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    getId:返回该线程的标识符BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    getName:返回该线程的名称BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    getPriority:返回线程优先级BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    getState:获取当前线程状态BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    isAlive:测试线程是否处于活动状态BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    isDaemon:线程是否为守护线程BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    isInterrupted:是否已经中断BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

  • 代码实例:BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

  • (2)线程优先级:BL7办公区 - 实用经验教程分享!

    更改线程优先级的方法:setPriority(int priority)BL7办公区 - 实用经验教程分享!

    补充:BL7办公区 - 实用经验教程分享!

    线程的切换是由线程调度控制的,无法通过代码来干涉,但是可以通过提高线程优先级来最大程度改善线程获取时间片的几率。优先级分为10级,值为1-10,1最低,10最高。BL7办公区 - 实用经验教程分享!

    线程优先级的三个常量:BL7办公区 - 实用经验教程分享!

    Thread.MIN_PRIORITYBL7办公区 - 实用经验教程分享!

    Thread.MAX_PRIORITYBL7办公区 - 实用经验教程分享!

    Thread.NORM_PRIORITYBL7办公区 - 实用经验教程分享!

  • 此文章未经授权抓取自百度经验
  • 代码实例:BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

  • (3)守护线程:BL7办公区 - 实用经验教程分享!

    设置线程为守护线程的方法:setDaemon(boolean)BL7办公区 - 实用经验教程分享!

    补充:BL7办公区 - 实用经验教程分享!

    Java中线程分为两种类型:用户线程和守护线程。通过Thread.setDaemon(true)设置为守护线程。如果不设置次此属性,默认为用户线程。BL7办公区 - 实用经验教程分享!

    用户线程和守护线程的区别:BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    主线程结束后用户线程还会继续运行,在没有用户线程可服务时会自动离开;BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

    守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。BL7办公区 - 实用经验教程分享!

    BL7办公区 - 实用经验教程分享!

  • 代码实例:BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

  • (4)休眠方法:BL7办公区 - 实用经验教程分享!

    Static void sleep(long ms)BL7办公区 - 实用经验教程分享!

    该方法会使当前线程进入阻塞状态指定毫秒,当阻塞指定毫秒后,当前线程会重新进入Runnable状态,等待划分时间片。BL7办公区 - 实用经验教程分享!

  • 代码实例:BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

  • (5)yeild、join方法BL7办公区 - 实用经验教程分享!

    1)yeild方法:BL7办公区 - 实用经验教程分享!

    static void yield()BL7办公区 - 实用经验教程分享!

    用于使当前线程主动让出当次CPU时间片回到Runnable状态,等待分配时间片。BL7办公区 - 实用经验教程分享!

  • 2)join方法:BL7办公区 - 实用经验教程分享!

    void join()BL7办公区 - 实用经验教程分享!

    用于等待当前线程结束,才会让其它线程执行。BL7办公区 - 实用经验教程分享!

    调用时需要捕获InterruptExceptionBL7办公区 - 实用经验教程分享!

    join方法的代码实例:BL7办公区 - 实用经验教程分享!

    创建线程的方法有哪些BL7办公区 - 实用经验教程分享!

注意事项

  • 接受各位的意见建议,欢迎评论,也希望能对需要的人有点帮助。

以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!BL7办公区 - 实用经验教程分享!


标签: 硬件创建方法

办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码