zoukankan      html  css  js  c++  java
  • Java多线程的使用以及原理

    Java有两种方式实现多线程。

    第一种——继承Thread类,并重写run方法

    步骤:

    1. 定义类继承Thread类;
    2. 重写子类的run方法,将线程需要执行的代码写在run方法中;
    3. 创建子类的对象,则创建了线程对象;
    4. 调用该对象的start方法,开启线程。

    实例:

    public class MyThread extends Thread() {
    
        @Override
        public void run() {
            // 多线程代码
        }
    
        // 其他代码
    
    }
    Thread t = new MyThread();
    t.start();

    第二种——实现Runnable接口,用该类的对象构造Thread类

    步骤:

    1. 定义类实现Runnable接口;
    2. 实现接口中的run方法,将线程需要执行的代码写在run方法中;
    3. 用接口对象构造一个Thread对象;
    4. 调用Thread对象的start方法,开启线程。

    实例:

    public class MyClass implements Runnable() {
    
        public void run() {
            // 多线程代码
        }
    
        // 其他代码
    
    }
    MyClass m = new MyClass();
    Thread t = new Thread(m);
    t.start();

    start方法的功能

    1. 启动了线程
    2. 让jvm调用了Thread类(或子类)对象的run方法

    为什么可以有以上两种方式实现多线程?

    对于第一种方式很容易理解。由于重写了Thread类的run方法,调用start方法启动线程后,jvm将调用子类重写的run方法;

    对于第二种方式,调用start方法启动线程后,jvm将调用Thread类的run方法,其代码如下:

    public void run() {
        if (target != null) {
            target.run();
        }

    }

    其中target为Thread类的成员变量,类型为Runnable。在用Runnable对象构造Thread时,会使target引用该接口对象,所以执行target.run()时,实际上执行了接口对象的run方法。

  • 相关阅读:
    如何让AlertDialog 在点击确定或者取消时不消失
    你的睡眠时间和睡眠质量达标了么?
    如何使用指定浏览器打开网页
    国内主流Android安卓应用市场简介
    位运算——pku2436患病的奶牛
    高精度——sgu112
    树插入,树遍历——hdu3999
    大浮点数相加——hdu1753
    小数的幂——pku1001
    递推型DP——USACO 2009 February Silver bull and cow
  • 原文地址:https://www.cnblogs.com/1206ricky/p/4906723.html
Copyright © 2011-2022 走看看