多线程-方式二实现Runnable接口方式

方式二:实现Runnable接口的方式:
* 1. 创建一个实现了Runnable接口的类
* 2. 实现类去实现Runnable中的抽象方法:run()
* 3. 创建实现类的对象
* 4. 将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
* 5. 通过Thread类的对象调用start()。(start()1.启动当前线程2.调用当前线程的run方法)

继承Thread实现Runnable接口的对比:
* 开发中:优先选择:实现Runnable接口的方式
* 原因:1. 实现的方式没类的单继承性的局限性
* 2. 实现的方式更适合来处理多个线程共享数据的情况。
*
* 联系:public class Thread implements Runnable
* 相同点:两种方式都需要重写run(),将线程要执行的逻辑声明在run()中。
目前两种方式,要想启动线程,都是调用的Thread类中的start()。

(数据共享时线程存在安全问题)

package main.java.ThreadImplements;

/**
 * @Author lx
 * @Description:创建多线程----实现Runable接口方式
 * @Date 14:28 2020/8/4
 * @Version
 */
class RunnableTest implements Runnable{

    private int ticket = 100;
    @Override
    public void run() {
       while (true){
           if (ticket>0){
               System.out.println("当前窗口为"+Thread.currentThread().getName()+"票数:" +ticket);
                ticket--;

           }else {
               break;
           }

        }
    }
}

public class ThreadRunnable {
    public static void main(String[] args) {
        RunnableTest runnableTest = new RunnableTest();
        Thread thread = new Thread(runnableTest);
        Thread thread1 =new Thread(runnableTest);
        Thread thread2 =new Thread(runnableTest);
        thread.start();
        thread1.start();
        thread2.start();
    }
}
原文地址:https://www.cnblogs.com/lixia0604/p/13433981.html