• 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();
        }
    }
    
  • 相关阅读:
    setInterval和setTimeOut方法—— 定时刷新
    json
    开发者必备的火狐插件
    C#泛型类和集合类的方法
    jQuery几种常用方法
    SQL语句优化技术分析
    索引的优点和缺点
    Repeater使用技巧
    jQuery 表格插件
    利用WebRequest来实现模拟浏览器通过Post方式向服务器提交数据
  • 原文地址:https://www.cnblogs.com/2506236179zhw/p/14302209.html
Copyright © 2020-2023  润新知