继承Thread类实现run方法
步骤:
- 定义类继承Thread;
- 重写Thread类中的run方法;(目的:将自定义代码存储在run方法,让线程运行)
- 调用线程的start方法:(该方法有两步:启动线程,调用run方法)
public class UseThread {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
new MyTask().start();
System.out.println(3);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(4);
}
static class MyTask extends Thread{
@Override
public void run() {
System.out.println("这是通过继承实现的多线程!");
}
}
}
上面一段
demo
中所用到的方法如下:
方法
|
作用
|
join()
|
让当前这个线程阻塞 等
join()
的线程执行完毕再执行
|
setName()
|
设置线程名称
|
getName()
|
获取线程名称
|
currentTHread()
|
获取当前运行的线程对象
|
实现Runnable接口
注意事项
: 接口应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个称为
run
的无参方法。
步骤:
- 创建任务: 创建类实现Runnable接口
- 使用Thread 为这个任务分配线程
- 开启任务 Start()
使用方式
1---
创建一个类实现
Runnable
接口,使用
Thread
来操作这个任务
public class UseRunnable {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
new Thread(new Task()).start();
System.out.println(3);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(4);
}
static class Task implements Runnable{
public void run() {
System.out.println("这是我的第一个线程方法");
}
}
}
使用Lammbda表达式
new Thread(()->{
for(int i=0;i<=100;i++){
System.out.println(Thread.currentThread().getName()+":"+i);
}
}).start();
有返回值的线程
public class UseCallable {
public static void main(String[] args) throws Exception {
System.out.println(2);
FutureTask<Integer> futureTask = new FutureTask<Integer>(new Task());
System.out.println(3);
new Thread(futureTask).start();
System.out.println(4);
int result = futureTask.get();
System.out.println(5);
System.out.println(result);
System.out.println(6);
}
static class Task implements Callable<Integer> {
public Integer call() throws Exception {
Thread.sleep(2000);
return 1;
}
}
}