两种方法:
1、创建一个继承自Thread的线程类,然后再main(不限)中构造这个线程类对象。方法在之前讲过。
2、创建一个使用Runnable接口的线程类,然后在main(不限)中构造这个Runnable线程类,再通过构造Thread类,把线程类传入即可。
实例:
线程类(使用Runnable接口):
public class Runnable_Test002 implements Runnable{
@Override
public void run() {
}
}
main方法中调用:
Runnable_Test002 trs = new Runnable_Test002();
Thread trs1 = new Thread(trs);
trs1.start();
我们还可以多次构造Thread,引入同一个Runnable对象(trs),这样可以做到多线程计算同一道题的效果。
两种方法比较:
使用Runnable还可以继承其他类。
Runnable可以非常方便的实现多线程的数据的共享。
如此一来,你就可以创建多个线程处理同一个问题,并且共享进度。
匿名内部类创建线程:
目的就是简化一下代码,看起来不那么臃肿而已。
1-Runnable的匿名内部类
我们先来看看是怎么做的,我们只需要在main中写:
Runnable r1 = new Runnable(){
@Override
public void run() {
while(true)
System.out.println(Thread.currentThread().getName());
}
};
Thread t = new Thread(r1,"匿名内部类:");
t.start();
即可。或者将最后两行改写为:
new Thread(r1,"匿名内部类:").start();
化简代码。还可以使用Lambda匿名函数简化构造函数的代码:
Runnable r1 = () -> {
while(true)
System.out.println(Thread.currentThread().getName());
};
最终的效果:
Runnable r1 = () -> {
while(true)
System.out.println(Thread.currentThread().getName());
};
new Thread(r1,"匿名内部类:").start();
2-Thread的匿名内部类
Thread t1 = new Thread() {
@Override
public void run() {
while(true)
System.out.println(Thread.currentThread().getName());
}
};
t1.start();
如果连t1后续也不需要操作了,那么可以把t1也“匿名”了。
new Thread() {
@Override
public void run() {
while(true)
System.out.println(Thread.currentThread().getName());
}
}.start();
还可以使用Lambda再做简化:
new Thread(() -> {
while(true)
System.out.println(Thread.currentThread().getName());
}).start();