所谓的多线程就像小吃街卖铜锅米线的老板,老板就好比一个操作系统,如果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();
}

}


 

执行结果:

【BigData】Java基础_多线程_i++

 

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


 

 

测试结果:

【BigData】Java基础_多线程_测试类_02


作者:奔跑的金鱼