Java多线程-14

目录

程序线程进程

并发并行​编辑

创建线程的基本方式


程序线程进程

Java多线程-14_第1张图片
Java多线程-14_第2张图片并发并行
Java多线程-14_第3张图片

创建线程的基本方式(1)
Java多线程-14_第4张图片

package com.edu.threaduse;

public class Demo01 {
    public static void main(String[] args) throws InterruptedException {
        //创建Cat对象,可以当线程使用
        Cat cat = new Cat();
        cat.start();//启动线程
        //使用run的话是主线程里面的一个普通方法,只有run执行完毕才结束
        //说明:当main线程启动一个子线程Thread-0,主线程不会阻塞,会继续执行
        for (int i =0;i<10;i++){
            System.out.println("主线程i="+i);
            Thread.sleep(1000);
        }
    }
}
//通过继承Thread类创建线程
/*
当一个类继承类Thread类,该类就可以当做线程使用
我们会重写run方法,写上自己的业务代码
run Thread类实现Runnable接口的run方法
 */
class Cat extends Thread{
        @Override
        public void run() {
            int time =0;
            while(time++<80){
                //重写run方法,写上自己的业务逻辑
                //该线程每隔1秒,在控制台输出"喵喵,我是小猫咪";
                System.out.println("喵喵,我是小猫咪"+"线程名称="+Thread.currentThread().getName());
                //让线程休眠1s
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }
}

Java多线程-14_第5张图片

创建线程的基本方式(2) 
Java多线程-14_第6张图片

package com.edu.threaduse;

public class Demo02 {
    public static void main(String[] args) {
//        Dog dog = new Dog();
//        //dog.start()无法使用
//        Thread thread = new Thread(dog);
//        thread.start();
        Tiger tiger = new Tiger();
        ThreadProxy threadProxy = new ThreadProxy(tiger);
        threadProxy.start();
    }
}
class Animal{}
class Tiger extends Animal implements Runnable{
    @Override
    public void run() {
        System.out.println("老虎");
    }
}
class ThreadProxy implements Runnable{ //看成一个Thread代理类
    private  Runnable target = null;//属性

    @Override
    public void run() {
        if(target!=null){
            target.run(); //运行类型为Tiger
        }
    }

    public ThreadProxy(Runnable target) {
        this.target = target;
    }
    public void start(){
        start0();
    }
    public void start0(){
        run();
    }
}

class Dog implements Runnable{ //通过实现Runnable接口实现线程

    @Override
    public void run() {
        while(true){
            System.out.println("小狗叫");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

Java多线程-14_第7张图片 

售票超卖

package com.edu.ticket;

public class SellTicket {
    public static void main(String[] args) {
        SellTick02 sellTick02 = new SellTick02();
        new Thread(sellTick02).start();
        new Thread(sellTick02).start();
        new Thread(sellTick02).start();
    }
}

//class SellTick01 extends Thread{
//    private static int ticketNum = 100;
//
//    @Override
//    public void run() {
//
//       while (true){
//           if (ticketNum<=0){
//               System.out.println("售票结束");
//               break;
//           }
//           System.out.println("售出一张,还有:"+--ticketNum+"张");
//           try {
//               Thread.sleep(1000);
//           } catch (InterruptedException e) {
//               throw new RuntimeException(e);
//           }
//       }
//    }
//}
class SellTick02 implements Runnable{
    private  int ticketNum = 100;

    @Override
    public void run() {
        while (true){
            if (ticketNum<=0){
                System.out.println("售票结束");
                break;
            }
            System.out.println("售出一张,还有:"+--ticketNum+"张");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

 

你可能感兴趣的:(Java入门学习,java,开发语言)