zoukankan      html  css  js  c++  java
  • 【BigData】Java基础_多线程

    所谓的多线程就像小吃街卖铜锅米线的老板,老板就好比一个操作系统,如果5个顾客同时去买米线,那么,此时老板就会同时准备好5个铜锅,然后同时放上水、调料、米线,同时煮5个人的米线,如果逐个煮的话,那么估计煮了2个人的米线,后面3人就来找老板退款了。

    官方解释:多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术

    在Java中实现多线程四部曲:

    (1)将需要用多线程方式执行的逻辑,写入一个runnable实现类中(run方法中);

    (2)创建出这个runnable实现类的对象;

    (3)利用这个runnable对象构造出n个thread线程;

    (4)将这n个thread启动(thread.start());

    1.多线程案例

    测试类:Demo1.java
    package cn.test.logan.day13;
    /**
     * 多线程测试类1
     * @author QIN
     *
     */
    public class Demo1 implements Runnable{
    
        @Override
        public void run() {
            for(int i= 0;i<=2;i++) {
                System.out.println("Demo1中的线程-"+i+"**********");
            }    
        }
        
    
    }

     测试类:Demo2.java

    package cn.test.logan.day13;
    /**
     * 多线程测试类2
     * @author QIN
     *
     */
    public class Demo2 implements Runnable{
            @Override
            public void run() {
                for(int i= 0;i<=5;i++) {
                    System.out.println("Demo2中的线程"+i+"----------");
                }    
            }
    }

    测试多线程类:ThreadDemo.java

    package cn.test.logan.day13;
    
    public class ThreadDemo {
        
        public static void main(String[] args) {
            Demo1 demo1 = new Demo1();
            Demo2 demo2 = new Demo2();
            // 构造一个线程,指定要执行的逻辑
            Thread thread1 = new Thread(demo1);
            Thread thread2 = new Thread(demo1);
            Thread thread3 = new Thread(demo1);
            Thread thread4 = new Thread(demo2);
            Thread thread5 = new Thread(demo2);
            
            // 将这5个线程以多线程方式启动
            thread1.start();
            thread2.start();
            thread3.start();
            thread4.start();
            thread5.start();
        }
        
    }

    执行结果:

     2.将数据传递到Runnable对象中

    在实际操作中,我们有时候需要往对象中动态的传递数据,此时可以使用构造函数来完成,以下是具体的代码实现。

    多线程测试代码:ThreadDem.java

    package cn.test.logan.day13;
    
    public class ThreadDemo {
        
        public static void main(String[] args) {
            Demo1 demo1 = new Demo1("张三");Demo1 demo12 = new Demo1("李四");Demo1 demo13 = new Demo1("王五");
            Demo2 demo2 = new Demo2();
            // 构造一个线程,指定要执行的逻辑
            Thread thread1 = new Thread(demo1);
            Thread thread2 = new Thread(demo12);
            Thread thread3 = new Thread(demo13);
            Thread thread4 = new Thread(demo2);
            Thread thread5 = new Thread(demo2);
            
            // 将这5个线程以多线程方式启动
            thread1.start();
            thread2.start();
            thread3.start();
            thread4.start();
            thread5.start();
        }
        
    }

    测试类1:Demo1.java

    package cn.test.logan.day13;
    /**
     * 多线程测试类1
     * @author QIN
     *
     */
    public class Demo1 implements Runnable{
        private String name;
        
        public Demo1(String name) {
            super();
            this.name = name;
        }
    
        @Override
        public void run() {
            for(int i= 0;i<=2;i++) {
                System.out.println("Demo1中的线程-"+name);
            }    
        }
        
    
    }

    测试类2:Demo2.java

    package cn.test.logan.day13;
    /**
     * 多线程测试类2
     * @author QIN
     *
     */
    public class Demo2 implements Runnable{
            @Override
            public void run() {
                for(int i= 0;i<=5;i++) {
                    System.out.println("Demo2中的线程"+i+"----------");
                }    
            }
    }

    测试结果:

  • 相关阅读:
    atitit.团队建设要不要招技术储备人才的问题
    Atitit. 最佳实践 QA降低cpu占有率cpu占用太高怎么办
    Atitit.struts2体系结构大总结
    Atitit.hibernate体系结构大总结
    Atitit.软件GUI按钮与仪表盘db数据库区导入mysql sql错误的解决之道
    Atitit. Gui控件and面板程序快速启动区最佳实践Launchy ObjectDocko0g
    Atitit。团队建设管理最佳实践如何留住核心人才,防止人才流失 ??
    Atitit.ALT+TAB没反应车and 点击任务栏程序闪烁但是不能切换
    Atitit.Gui控件and面板数据库区mssql 2008 权限 配置 报表查看成员
    Atitit.故障排除系列NoClassDefFoundError NoClassDefFoundError
  • 原文地址:https://www.cnblogs.com/OliverQin/p/12149814.html
Copyright © 2011-2022 走看看