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

测试结果:

猜你喜欢

转载自www.cnblogs.com/OliverQin/p/12149814.html