zoukankan      html  css  js  c++  java
  • Java中多线程的使用(超级超级详细) Thead类的使用 3

    Java中多线程的使用(超级超级详细) Thead类的使用 3

    下面我们先来介绍一些基本方法

    构造方法

    public Thread() :分配一个新的线程对象。
    public Thread(String name) :分配一个指定名字的新的线程对象。
    public Thread(Runnable target) :分配一个带有指定目标新的线程对象。
    public Thread(Runnable target,String name) :分配一个带有指定目标新的线程对象并指定名字。
    常用方法
    public String getName() :获取当前线程名称。
    public void start() :导致此线程开始执行; Java虚拟机调用此线程的run方法。
    public void run() :此线程要执行的任务在此处定义代码。
    public static void sleep(long millis) :使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。
    public static Thread currentThread() :返回对当前正在执行的线程对象的引用

    创建线程的方式有两种 一种是继承Thead类的方式,一种是实现Runable接口的方式,下面我们来逐一讲解

    继承Thead类的方式

    //继承Thread接口
    public class MyThread extends java.lang.Thread{
        public MyThread(String name) {
            super(name);
        }
        //覆写run方法
        @Override
        public void run() {
            int i=20;
            for (int i1 = 0; i1 < i; i1++) {
                System.out.println("辅线程"+i1);
            }
        }
    }
    

    创建线程的方式二

    使用Runable接口来实现
    怎么使用Runable接口
    1.定义一个类继承Runable接口,并实现其run()方法;
    2.创建Runable对象,并以该对象作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象
    3.调用Thread的start()来启动该线程
    下面使用一段代码来演示

    package Rubable;
    public class RunableImp implements Runnable {
        @Override
        public void run() {
            int i=20;
            for (int i1 = i; i1 > 0; i1--) {
                System.out.println("Runable接口:"+i1);
            }
        }
    }
    
    package Rubable;
    
    public class Main {
        public static void main(String[] args) {
            RunableImp runableImp = new RunableImp();
            Thread r = new Thread(runableImp);
            r.start();
            int i=20;
            for (int i1 = i; i1 > 0; i1--) {
                System.out.println("主线程:"+i1);
            }
        }
    }
    

    可以看到实现Runable接口,只是使该类具有了多线程的特征,run()方法使多线程程序的一个执行目标所有多线程的代码都在run()方法里面,Thread其实也是实现了Runable接口的类
    所有的多线程代码都是通过Thread的start方法来运行的,所以,不管是继承Thread还是实现runable接口来实现多线程,最终都是通过Thread的对象的APIA来控制线程
    即Runalbe对象仅仅是作为Thread对象的target,Runable实现类里包含的run()方法仅作为线程的执行体,而实际的对象依然是Thread实例,只是线程负责执行其target的run方

    使用Runable类的好处

    1.避免了类单继承的局限性
    2.增加了程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码与线程独立
    3.线程池中只可以放入Runable或Callable类线程,不能放入继承Thread的类
    小细节:
    java在一次运行中至少会启动两个线程,一个main线程一个垃圾收集线程,java命令在执行一个类的时候,实际都会启动一个jvm,每一个jvm其实就是在操作系统中启动了一个进程

    扯点匿名内部类的操作

    有没有一点一气呵成的感觉

    package Rubable;
    public class Main {
        public static void main(String[] args) {
            new  Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("这是匿名内部类输出的!!!");
                }
            }).start();
        }
    }
    

    结果
    在这里插入图片描述

    以上就是java操作匿名内部类的一些基础操作,如有错误还请各位批评指正
    觉得还不错的可以点赞收藏一下,我会不定期更新文章,喜欢我的也可以关注我哦

    在这里插入图片描述

  • 相关阅读:
    shell脚本空行造成“: not found.sh“报错
    MySQL实现分组排序(8.0版本以下ROW_NUMBER() OVER())
    vscode远程主机
    nginx-ingress-controler改写上下文
    nginx-ingress-controller自定义参数
    kubernetes安装nginx-ingress-controller服务
    二进制kubernetes升级
    C++关键字完整版
    virtio、vhost和 vhost-user
    Tomcat端口占用报错时的排除办法
  • 原文地址:https://www.cnblogs.com/pjhaymy/p/13322276.html
Copyright © 2011-2022 走看看