• 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展示了如何解决模拟火车票售票的线程安全问题

  • 相关阅读:
    【bzoj1176】[Balkan2007]Mokia
    【bzoj1503】[NOI2004]郁闷的出纳员
    C#设置和获取系统环境变量
    结伙创业指南及翻脸法则
    Unity3D_(游戏)卡牌03_选关界面
    Unity3D_(游戏)卡牌02_主菜单界面
    Unity3D_(游戏)卡牌01_启动屏界面
    Unity3D_(游戏)跳一跳超简单制作过程
    如何将项目托管到Github上
    Android_(游戏)打飞机06:后续
  • 原文地址:https://www.cnblogs.com/majestyking/p/12426388.html
Copyright © 2020-2023  润新知