zoukankan      html  css  js  c++  java
  • java多线程

    创建多线程之方式二


    Runnable

    package demo01;
    //创建线程方式二 实现runnable接口,重写run方法 ,执行线程需要丢入runnable接口实现类,调用start方法
    
    public class TestThread3 implements Runnable {
        @Override
        public void run() {
            for (int i = 0; i < 200; i++) {
                System.out.println("我在看视频***"+i);
            }
        }
        public static void main(String[] args) {
            TestThread3 testThread3=new TestThread3();
            //创建线程对象,通过线程对象开启西安城,代理
    //        Thread thread=new Thread(testThread3);
    //        thread.start();
            new Thread(testThread3).start();
            for (int i = 0; i < 15; i++) {
                System.out.println("我在学习多线程----"+i);
            }
        }
    }
    

    龟兔赛跑

    package demo01;
    
    public class Race implements Runnable {
        private String winner;
        @Override
        public void run() {
            for (int i = 0; i < 150; i++) {
                boolean flag=gameOver(i);
                if (flag) {
                    System.out.println("比赛结束");
                    break;
                }
                if(Thread.currentThread().getName().equals("兔子")&&i==25){
                    try {
                        Thread.sleep(5);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                System.out.println(Thread.currentThread().getName()+"跑了"+i+"步");
            }
        }
        private boolean gameOver(int step){
            if(winner!=null)
            {
                return  true;
            }{
                if(step>=50){
                    winner=Thread.currentThread().getName();
                    System.out.println("胜利者为"+winner);
                    return true;
                }
            }
            return false;
        }
    
        public static void main(String[] args) {
            Race race=new Race();
            new Thread(race,"wugui").start();
            new Thread(race,"兔子").start();
        }
    }
    

    模拟火车抢票

    package demo01;
    //多个线程同时操作同一个对象
    //买火车票的例子
    //数据紊乱
    public class TestThread4 implements Runnable {
        private int tickNums=10;
    
        @Override
        public void run() {
            while (true){
                if(tickNums<=0){
                    System.out.println("票已售没");
                break;}
                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+"拿到了"+tickNums--+"票");
            }
        }
    
    
        public static void main(String[] args){
            TestThread4 testThread4=new TestThread4();
            new Thread(testThread4,"线程1").start();
            new Thread(testThread4,"线程2").start();
            new Thread(testThread4,"线程3").start();
        }
    }
    
  • 相关阅读:
    SQL语句中日期相减注意事项
    WinRAR打压缩的几个命令
    SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL
    某一列选最大值 其他内容不同要求随机选择的情况下去除重复行的方法
    Datastage里Aggregator的一些注意事项
    几个网络流行词的翻译
    找工作的网站
    WPF版连连看,swing版俄罗斯方块源码
    mirrortankWar
    Delphi著名皮肤控件库横向对比。
  • 原文地址:https://www.cnblogs.com/2506236179zhw/p/14302209.html
Copyright © 2011-2022 走看看