可能会有很多人觉得Java线程不容易理解,但通过循序渐进的方法,理解Java线程就会变得很简单!
Java的线程相当于一个单独的任务,这个任务由 run() 方法来实现,线程的实现,就是 run() 方法的实现。
run() 方法的实现,常用的有两种:
1、继承 Thread 类,因为 Thread 类里有 run() 方法。
2、实现 Runnable 接口,因为 Runnable 接口里有 run() 方法。
为了程序的灵活性,常常使用第 2 种方法。
(注:在Java中,一个类只可以继承一个类,但却可以实现多个接口)
方法1–继承Thread类:
class MyThread extends Thread{
@Override
public void run() {
//要完成的任务
}
}
方法2–实现 Runnable 接口:
class MyRunnable implements Runnable{
@Override
public void run() {
//要完成的任务
}
}
线程使用原理:设置一个任务,将这个任务分配给一个线程处理。
1、空任务线程
Thread thread = new Thread(); //创建一个线程类
thread.start(); //启动这个线程
在该段代码中我们创建了一个线程,却没有给线程 thread 分配任务( 没有实现run()方法 )。下面我们来分配这个任务
2、有任务的线程
方法一:
MyThread thread = new MyThread();
thread.start();
在该方法中,MyThread 既是一个线程也被分配了一个任务,所以,可以直接调用 start() 方法启动线程。
方法二:
MyRunnable myrunnable = new MyRunnable();
Thread thread = new Thread(myrunnable);
thread.start();
在该方法中,任务在 MyRunnable 中实现了,所以将 MyRunnable 作为参数传递给Thread,以此完成任务分配。
两种方法本质上都是实现 run() 方法,任务才是线程的核心
有时我们不想创建一个新类来用于实现线程,下面的方法可以满足我们的需求。
我们可以这样:
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
//要完成的任务
}
});
thread.start();
也可以这样
new Thread(new Runnable() {
@Override
public void run() {
//要完成的任务
}
}).start();
还可以这样:
new Thread(()->{
//要完成的任务
}).start();
当run() 方法完成后线程就会自动终止,也可以用其他方法终止线程,但都不太安全。
这些就是线程的简单使用了,如果还有其他的问题就继续找资料吧~