Python 官方文档:入门教程 => 点击学习
目录继承Thread,这里使用匿名内部类实现Runnable接口,配合Thread类,同样用匿名内部类FutureTask配合Thread继承Thread,这里使用匿名内部类 @Sl
@Slf4j(topic = "c.Test1")
public class Test1 {
public static void main(String[] args) {
//创建线程对象
Thread t = new Thread(){
@Override
public void run() {
//要执行的任务
log.debug("running");
}
};
//设置线程的名字
t.setName("t1");
//启动线程
t.start();
log.debug("running");
}
}
@Slf4j(topic = "c.Test2")
public class Test2 {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
@Override
public void run() {
//要执行的任务
log.debug("running");
}
};
//创建线程对象
Thread t = new Thread(runnable, "t2");
//启动线程
t.start();
}
}
//19:52:27.646 [t2] DEBUG c.Test2 - running
在javajava中,有@FunctionalInterface@FunctionalInterface注解意味着该接口只有一个抽象方法,即可以用lambdalambda表达式的方式简化
@Slf4j(topic = "c.Test2")
public class Test2 {
public static void main(String[] args) {
Runnable runnable = () -> {
//要执行的任务
log.debug("running");
};
//创建线程对象
Thread t = new Thread(runnable, "t2");
//启动线程
t.start();
}
}
因为FutureTask可以接口一个Callable类型的参数,用来处理有返回值的情况
@Slf4j(topic = "c.Test3")
public class Test3 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//创建任务对象
FutureTask<Integer> task = new FutureTask<>(() -> {
log.debug("running");
Thread.sleep(1000);
return 100;
});
FutureTask<Integer> task1 = new FutureTask<>(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
log.debug("running");
Thread.sleep(1000);
return 100;
}
});
//参数1是任务的对象, 参数2是线程的名字
Thread t = new Thread(task, "t3");
t.run();
//主线程堵塞,同步等待task执行完毕的结果
Integer integer = task.get();
log.debug("结果是:{}", integer);
}
}
到此这篇关于Java创建线程的方式解析的文章就介绍到这了,更多相关Java创建线程内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Java创建线程的方式解析
本文链接: https://www.lsjlt.com/news/165487.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0