• java实现线程的两种方式


      要求:一个火车站,三个售票员卖出100张票

    1.通过继承Thread类实现

    实现思路:建立ThreadTest类继承Thread并建立三个线程卖100张票

    public class ThreadTest extends Thread {
        private int i = 100;
        public void run() {
            while(true){
                if(i>0) {
                    System.out.println(Thread.currentThread().getName() + "正在售出第" + i-- + "张票");
                }    
            }
        }
    
        public static void main(String[] args){
            ThreadTest th = new ThreadTest();
            new Thread(th).start();
            new Thread(th).start();
            new Thread(th).start();
        }
    }

    体会:三个线程之间无序卖票,且线程之间无干扰。

    2.通过实现Runnable接口达到要求

    实现思路:建立ThreadTest类实现Runnable接口并建立一个对象的三个线程卖100张票

    public class ThreadTest implements Runnable {
        private int i = 100;
        public void run() {
            while(true){
                if(i>0) {
                    System.out.println(Thread.currentThread().getName() + "正在售出第" + i-- + "张票");
                }    
            }
        }
    
        public static void main(String[] args){
            ThreadTest th = new ThreadTest();
            new Thread(th).start();
            new Thread(th).start();
            new Thread(th).start();        
        }
    }

    个人体会:三个线程共同卖出100张票,线程之间无序执行,th就相当于一个火车站,然后三个售票员卖100张票

    拓展:三个火车站共同卖出100张票

     思路:建立三个ThreadTest类的对象当做三个火车站,每个火车站一个售票员,把票变为静态属性

    public class ThreadTest extends Thread {
        static int i = 100;
        public void run() {
            while(true){
                if(i>0) {
                    System.out.println(Thread.currentThread().getName() + "正在售出第" + i-- + "张票");
                }    
            }
        }
    
        public static void main(String[] args){
            ThreadTest th1 = new ThreadTest();
            new Thread(th1).start();//一火车站一售票员
            ThreadTest th2 = new ThreadTest();
            new Thread(th2).start();
            ThreadTest th3 = new ThreadTest();
            new Thread(th3).start();
        }
    }

    总结:一个ThreadTest类的对象就是一个火车站,一个进程就相当于一个售票员。。。

  • 相关阅读:
    在 IdentityServer4 中创建客户端
    IdentityServer4 快速上手
    GraphQL Part IV: 浏览器内的 IDE
    GraphQL Part VII: 实现数据变更
    GraphQL Part VIII: 使用一对多查询
    GraphQL Part VI: 使用 Postgres 和 EF Core 持久化数据
    GraphQL Part V: 字段,参数和变量
    GraphQL Part III: 依赖注入
    GraphQL Part II: 中间件
    GraphQL Part I: hello, world.
  • 原文地址:https://www.cnblogs.com/20158424-hxlz/p/6526850.html
Copyright © 2020-2023  润新知