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();
    }
}
原文地址:https://www.cnblogs.com/2506236179zhw/p/14302209.html