从Java线程到kotlin协程之线程的基本使用

Posted XeonYu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Java线程到kotlin协程之线程的基本使用相关的知识,希望对你有一定的参考价值。

了解完多线程的概念之后,我们先来看一下线程的基本使用。

Java线程的使用方式

Java中实现线程的方式有一下三种

  • 继承Thread类,在子类实现run方法
  • 实现Runable接口
  • 实现Callable接口

我们先来简单看看Thread类

 

Thread类实现了Runnable接口

 

Runnable接口中只有一个run方法,实际上,线程的任务就是在run方法中执行的,也就是说我们实际开发过程中就是在run方法里写业务代码。

下面我们来看下三种方式的基本使用

 

方式一:继承Thread类

public class MyWorkThread extends Thread {
    @Override
    public void run() {

        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName() + "执行任务。。。" + i);
        }
    }
}
public class TestJava {

    public static void main(String[] args) {

        /*创建子线程*/
        MyWorkThread myWorkThread = new MyWorkThread();
        /*启动myWorkThread*/
        myWorkThread.start();
        
        /*主线程打印*/
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName() + "执行任务。。。" + i);
        }
    }
}

 

运行结果如下:

 

一般我们不会使用这种方式去实现多线程,因为这种写法比较死板,定义好的线程只能实现固定的写好的任务。

方式二:实现Runable接口

package methord2;

public class MyRunnable implements Runnable {
    @Override
    public void run() {

        for (int i = 0; i < 100; i++) {
            System.out.println("MyRunnable" + i);

        }
    }
}
package methord2;

public class Test {
    public static void main(String[] args) {

        MyRunnable myRunnable = new MyRunnable();

        Thread thread = new Thread(myRunnable);
        thread.start();

        for (int i = 0; i < 100; i++) {
            System.out.println("main :" + i);
        }
    }
}

 

 

运行结果:

 

通过匿名内部类简化代码:

 

 

可以Thread构造接收的Runnable是个接口,那我们可以使用匿名内部类来简化一下代码,如下:

        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    System.out.println("Runnable" + i);
                }
            }
        });

        thread.start();

 

通过Lambda表达式简化代码

由于Runnable接口中只有一个方法,那我们还可以直接写成Lambda的方式,代码如下

 

        Thread thread = new Thread(() -> {
            for (int i = 0; i < 100; i++) {
                System.out.println("Runnable" + i);
            }
        });

        thread.start();

这样一来,相比方式一,代码就简洁很多了,而且更加灵活。

 

Kotlin的写法就更简单了,如下:

fun main() {

    /*创建线程并启动*/
    Thread {
        for (i in 1..100) {
            println("${Thread.currentThread().name}=========>${i}")
        }

    }.start()


    /*主线程*/
    for (i in 1..100) {
        println("${Thread.currentThread().name}=========>${i}")
    }

}

 

 

运行结果:

 

 

 

好了,本篇文章就是这样

 

 


如果你觉得本文对你有帮助,麻烦动动手指顶一下,可以帮助到更多的开发者,如果文中有什么错误的地方,还望指正,转载请注明转自喻志强的博客,谢谢!

 

 

 

以上是关于从Java线程到kotlin协程之线程的基本使用的主要内容,如果未能解决你的问题,请参考以下文章

从Java线程到kotlin协程之多线程的基本概念

从Java线程到kotlin协程之线程合并 (join)

从Java线程到kotlin协程之线程休眠 (sleep)

从Java线程到kotlin协程之线程同步(wait)

从Java线程到kotlin协程之线程同步(synchronized关键字)

Kotlin SharedFlow&StateFlow 热流到底有多热?