欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java多线程中Thread与Runnable详解

程序员文章站 2022-05-05 22:47:38
...

在初学多线程部分知识时,Thread类与Runnable类是最经常接触到的两个经典类;可追溯至JDK1.0版本,古老的类传说。

剧情开始啦,神秘的鲜橙多国度,卖橙子喽(实现数据共享,产生若干线程进行同一数据的处理操作)

主角登场:斯先生(Thread),人称”鲜橙F4“之首;
Java多线程中Thread与Runnable详解
                  R小姐姐(Runnable),人称“仙女姐姐”;
Java多线程中Thread与Runnable详解

坊间议论道:斯先生那可是鲜橙国出了名的美男子;R姐姐也是咱们鲜橙庄园四千年来的美女呢;

Action:买橙子1场景开始

斯先生走来,身后跟着三个小老弟,拿着三个环保袋,直奔鲜橙庄园;

class MyThread01 extends Thread{
    private int orange = 10;
    private String name;

    public MyThread01(String name){
        this.name = name;
    }

    @Override
    public void run() {
        while(orange > 0){
            System.out.println(this.name+"买走了一个橙子,"+"还剩下"+--orange+"个橙子;");
        }
    }
}

public class ThreadTest01 {
    public static void main(String[] args) {
        Thread thread1 = new MyThread01("斯泽类");
        Thread thread2 = new MyThread01("斯西门");
        Thread thread3 = new MyThread01("斯美作");
        thread1.start();
        thread2.start();
        thread3.start();
    }
}

Java多线程中Thread与Runnable详解

R姐姐翩翩来,步履轻盈,缓缓走向庄园内;

class MyThread2 implements Runnable{

    private int orange = 10;
    private String name;

    public MyThread2(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        while (orange > 0){
            System.out.println(this.name+"挑走了一个橙子,还剩下"+--orange+"个橙子啦");
        }
    }
}

public class ThreadTest02 {
    public static void main(String[] args) {
        MyThread2 thread1 = new MyThread2("R姐姐");
        new Thread(thread1).start();
        new Thread(thread1).start();
        new Thread(thread1).start();
    }
}

Java多线程中Thread与Runnable详解

可以从结果看出,鲜橙F4的环保袋(Thread)里一共装了30个大橙子,仙女姐姐(Runnable)挑走了10个橙子;

结论:使用Runnable实现的多线程的程序类可以更好的描述出程序共享的概念(并不是说thread不可以)

Thread类是多线程的关键类,多线程的启动永远都是Thread类的start()方法

Java多线程中Thread与Runnable详解

这张图也是创建多线程的两种方式;

其中,需要注意的就是传入Runnable对象的那个,这里设计到典型设计模式中的代理设计模式;
Java中多线程的处理就是典型的代理模式,
Thread类完成资源调度,系统分配辅助线程业务类;自定义线程类(MyThread)负责真实业务实现;

Java多线程中Thread与Runnable详解

Thread与Runnable实现多线程的联系与区别:

(1)Runnable可避免Thread单继承局限
(2)Runnable可以更好的描述出程序共享的概念;

最后,

Java多线程中Thread与Runnable详解欢迎私聊及留言呐

相关标签: Java notes