zoukankan      html  css  js  c++  java
  • java之多线程

    一、创建线程的方式

    1、继承Thread类

    实现方式很简单,只需要创建一个类去继承Thread类然后重写run方法,在main方法中调用该类实例对象的start方法即可实现多线程并发。

    代码:

    public class MyThread extends Thread {
        @Override
        public void run(){
            super.run();
            System.out.println("执行子线程...");
        }
    }

    测试用例:

    public class Test {
        public static void main(String[] args) {
            MyThread myThread = new MyThread();
            myThread.start();
            System.out.println("主线程...");
        }
    }

    2、实现Runnable接口

    这种方式的实现也很简单,就是把继承Thread类改为实现Runnable接口。

    代码如下:

    public class MyRunnable implements Runnable {
        @Override
        public void run() {
            System.out.println("执行子线程...");
        }
    }

    测试用例:

    public class Test {
        public static void main(String[] args) {
    
            Runnable runnable = new MyRunnable();
            Thread thread = new Thread(runnable);
            thread.start();
            System.out.println("主线程运行结束!");
        }
    }

    我只研究过这两种,因在实际开发中只用到了实现runnable这种方式,因此研究了一下区别。

    继承Thread类也是实现了runnable接口,但区别在于继承Thread类的方法中,大多包含了关键字native。native 关键字告诉编译器(其实是JVM)调用的是该方法在外部定义的,使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。这些函数的实现体在DLL中,JDK的源代码中并不包含,你应该是看不到的。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。由于使用了这个关键字比较多,因此依赖于各种不同的平台,也就达不到跨平台的灵活性。

    开发中大多数使用的是windows开发环境,而服务器中大多数是linux,属于跨平台了,如果你使用了继承Thread这种方式,需要对两种操作平台的熟悉,方可完全控制这个项目。

    以上仅是个人学习过程中的一些观点,如有错误,欢迎大家指点一二,互相学习

  • 相关阅读:
    经典排序算法——堆排序
    Jumpserver双机高可用环境部署笔记
    实战:使用SVN+apache搭建一个版本控制服务器
    linux开启swap(磁盘缓存)操作
    Jenkins + Pipeline 构建流水线发布
    Elasticsearch 5.0 安装 Search Guard 5 插件
    大数据平台搭建(hadoop+spark)
    centos7搭建ELK Cluster集群日志分析平台
    ELK 之三:Kibana 使用与Tomcat、Nginx 日志格式处理
    ELK 日志分析实例
  • 原文地址:https://www.cnblogs.com/changyuyao/p/13490080.html
Copyright © 2011-2022 走看看