• 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这种方式,需要对两种操作平台的熟悉,方可完全控制这个项目。

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

  • 相关阅读:
    JSK42586.Tree(动态开点线段树+树上启发式合并)
    CF1188B.Count Pairsl(数学)
    2021ICPC亚洲区域赛(昆明)复盘
    1009F.Dominant Indices (树上启发式合并)
    246E.Bloods Counsin Return(离线+树上启发式合并)
    208E.Blood Cousins(离线+倍增LCA+树上启发式合并)
    208E.Blood Cousins (离线+树上启发式合并)
    570D.Tree Requests (离线+树上启发式合并)
    Java从入门到实战之(6)SSM框架使用
    Java从入门到实战之(5)Java集合对比汇总
  • 原文地址:https://www.cnblogs.com/changyuyao/p/13490080.html
Copyright © 2020-2023  润新知