Java基础进阶_7
2021-02-13 19:20
标签:+= 重写 rac return dem 调用 exception 结果 catch 创建线程三种方式: Java基础进阶_7 标签:+= 重写 rac return dem 调用 exception 结果 catch 原文地址:https://www.cnblogs.com/superyucong/p/12725429.html(1)直接定义一个类继承线程类Thread,重写run()方法,创建线程对象
调用线程对象的start()方法启动线程。缺点:线程类已经继承了Thread类无法继承其他类了,功能不能通过继承拓展(单继承的局限性)。
public class ThreadDemo1 {
public static void main(String[] args) {
Thread t1 = new MyThread("线程1");
t1.start();
Thread t2 = new MyThread("线程2");
t2.start();
for (int i = 0; i ) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
class MyThread extends Thread{
MyThread(String name){
super(name);
}
@Override
public void run() {
for (int i = 0; i ) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
(2)定义一个线程任务类实现Runnable接口,重写run()方法,创建线程任务对象,把
线程任务对象包装成线程对象, 调用线程对象的start()方法启动线程。public class ThreadDemo2 {
public static void main(String[] args) {
Runnable target = new MyThread1();
Thread t1 = new Thread(target,"线程1");
t1.start();
Thread t2 = new Thread(target,"线程2");
t2.start();
for (int i = 0; i ) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
class MyThread1 implements Runnable{
@Override
public void run() {
for (int i = 0; i ) {
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
(3)实现Callable接口。
实现Callable接口。
-- 1,定义一个线程任务类实现Callable接口 , 申明线程执行的结果类型。
-- 2,重写线程任务类的call方法,这个方法可以直接返回执行的结果。
-- 3,创建一个Callable的线程任务对象。
-- 4,把Callable的线程任务对象包装成一个未来任务对象。
-- 5.把未来任务对象包装成线程对象。
-- 6.调用线程的start()方法启动线程public class ThreadDemo3 {
public static void main(String[] args) {
Callable call = new MyThread3();
FutureTask task = new FutureTask(call);
Thread t = new Thread(task);
t.start();
try {
System.out.println(task.get());
} catch (Exception e) {
e.printStackTrace();
}
}
}
class MyThread3 implements Callable{
@Override
public Object call() throws Exception {
int sum = 0;
for (int i = 0; i ) {
System.out.println(Thread.currentThread().getName()+":"+i);
sum+=i;
}
return sum;
}
}
下一篇:Leetcode练习(Python):数组类:第31题:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列