Java多线程(二)实现多线程的三种方法之Thread类

Java实现多线程的三种方法

  • 继承Thread类
  • 实现Runnable接口
  • 实现Callable接口,这JUC并发包下的,属于比较高级的用法

一:继承Thread类的步骤:

  1. 继承Thread类
  2. 重写run方法
  3. 调用start方法启动多线程.run是普通方法,只有调用start()方法才能启动多线程。

注意事项:Thread类里面的run()方法没有返回值,有异常不能Throw只能try-catch

代码示例:

以下只是简单例子,这个例子里面存在着同步的问题。

public class ThreadDemo {
    public static void main(String[] args) {
        System.out.println("一边听音乐...");

        Thread p1=new Person();
        p1.start();
    }
}

class Person extends Thread{
    @Override
    public void run() {
        System.out.println("一边写代码...");
    }
}

示例二:

模拟火车票售票系统

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

        for (int i = 0; i < 5; i++) {
            new Ticket().start();
        }
    }
}

class Ticket extends Thread {
    private static int ticketNum = 20;

    @Override
    public void run() {
        while (ticketNum > 0) {
            System.out.println(this.getName() + "正在售第" + (ticketNum--) + "张票!");
        }
    }
}

运行结果:可以看到同一张票被重复销售了。

Thread-1正在售第20张票!
Thread-3正在售第17张票!
Thread-0正在售第20张票!
Thread-2正在售第18张票!
Thread-4正在售第19张票!

以后会改进这个程序。

重要参考:

https://www.cnblogs.com/alltoforever/p/10054686.html

这个post展示了如何解决模拟火车票售票的线程安全问题

原文地址:https://www.cnblogs.com/majestyking/p/12426388.html