什么是线程
java.lang.Thread类中有这样的明确定义:线程是程序中执行的线程,Java虚拟机允许程序同时运行多个执行线程。
比如执行以下main方法,就是执行了一个线程。
public static void main(String[] args) throws InterruptedException {
System.out.println("=========start========");
System.out.println("=========end========");
}
怎么创建多线程
继承Thread类,重写run方法
public class ExtendsDemo extends Thread {
public ExtendsDemo() {
}
public void run() {
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] args) {
for (int i = 0; i < 4; i++) {
new ExtendsDemo().start();
}
}
}
实现Runnable接口,重写run方法
public static void main(String[] args) throws InterruptedException {
System.out.println("=========start========");
for (int j = 0; j < 4; j++) {
new Thread(() -> {
for (int i = 0; i <10 ; i++) {
{
System.out.println("通过实现Runnable接口,实现的多线程:"+Thread.currentThread().getName()+" " + i);
}
}
}).start();
}
System.out.println("=========end========");
}
通过Callable和FutureTask创建线程
public class CallableDemo {
public static void main(String[] args) {
Callable<Object> oneCallable = new Tickets<>();
FutureTask<Object> oneTask = new FutureTask<>(oneCallable);
Thread t = new Thread(oneTask);
System.out.println(Thread.currentThread().getName());
t.start();
}
}
class Tickets<Object> implements Callable<Object>{
@Override
public Object call() throws Exception {
System.out.println("通过实现Callable接口,实现多线:程"+Thread.currentThread().getName());
return null;
}
}
通过线程池,创建线程
关于线程池的更多知识,可以参考小七的另一篇文章
什么是并发编程
并发编程,用一句话来说,就是使用多线程来编程。
|