zoukankan      html  css  js  c++  java
  • 死磕Java多线程-入门前篇

    前言

    你如果是刚开始学习线程的知识,那么你可以看下这篇文章,本文章虽然不能带着你学习全部的线程知识,但是可以先带你看一下基本的知识,在以后的学习中可以更加顺畅

    一、实现线程的方法有多少种

    在网上百度线程实现的方法,可以看到有很多种

    • 继承Thread类,重写run方法
    • 实现Runnable接口,重写run方法。
    • 通过Callable和RutureTask创建线程

    在网上有很多种说法,当然这些说法也是正确的,它们确实可以创建出线程来,但是看到它们的线程的源码后,你可以发现它们无非是通过Thread类或者是实现Runnable接口来实现的。

    在Oracle的官方文档中也有这样写过:

    线程实现的第一种方法

    通过实现Runnable的方式创建线程

    如何调用的线程单元的代码呢?

    在此先来看下在使用了Thread.start的方法后会进行舒什么样的操作呢?上面说到不管使用的哪一种方法来创建的线程,都要重写run方法,当使用实现runnable类的时候,将它做为一个参数传入Thread构造中,在调用其中的run方法。

    runme

    当使用了继承Thread类的方式中,会将Thread类run方法全部的重写,所执行的run里面的代码是重写后的

    start和run方法的区别

    • start(): 作用是启动一个新的线程,然后会执行相应的run方法,不过Start不可以重复的调用
    • Run(): run可以被重复的调用,如果是单独的调用的话,就会和普通方法一样,不会有有新线程的产生,

    start方法不可以重复调用的原因是,在调用start时候,线程的状态也会改变,当在调用start时,会有一个检测线程状态的代码,如果不是0(0代表的是new状态)就会抛出线程状态异常。

    threadstart

    未完
  • 相关阅读:
    2021年下半年北京市中小学教师资格考试笔试报名公告
    高效演讲
    php的Allowed memory size of 134217728 bytes exhausted问题解决办法
    1111error
    http 500 错误
    xshell连接centons
    Vue 计算属性
    Vue 自定义指令
    Vue 事件绑定
    Vue v-cloak指令解决插值表达式“闪动”问题
  • 原文地址:https://www.cnblogs.com/sdayup/p/14730965.html
Copyright © 2011-2022 走看看