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+"----------");
                }    
            }
    }

    测试结果:

  • 相关阅读:
    HDU 4122 Alice's mooncake shop
    win7 Visual Studio 2008 安装程序时出现“ 加载安装组件时遇到问题。取消安装。”处理方法
    [置顶] 《程序员,你伤不起》–读书笔记-序
    顺序查找的优化方法
    结构体的大小的计算与空间的优化--之基本类型
    poj 1836 Alignment
    HDU 4721 Food and Productivity (二分+树状数组)
    POJ 1724 最短路费用限制
    Java面试题之九
    Eclipse 支持jQuery 自动提示
  • 原文地址:https://www.cnblogs.com/OliverQin/p/12149814.html
Copyright © 2011-2022 走看看