SDayUp
做自已喜欢的事情就不是浪费时间。

前言

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

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

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

  • 继承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

未完
posted on 2021-05-05 08:58  SDayUp  阅读(54)  评论(0编辑  收藏  举报