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

    未完
  • 相关阅读:
    linux常用命令三
    linux常用命令二
    redis持久化
    Linux环境redis集群搭建
    Maven常用命令
    Maven生成项目站点
    maven中import scope依赖方式解决单继承问题的理解
    maven使用assembly打包tar.gz文件
    Apache CXFjar包目录(转)
    WebService学习笔记一
  • 原文地址:https://www.cnblogs.com/sdayup/p/14730965.html
Copyright © 2011-2022 走看看