![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
文章平均质量分 67
一路向北啊
这个作者很懒,什么都没留下…
展开
-
线程中的start()方法和run()的区别
一、区别1、线程中的start()方法和run()方法的主要区别在于,当程序调用start()方法,将会创建一个新线程去执行run()方法中的代码。但是如果直接调用run()方法的话,会直接在当前线程中执行run()中的代码,注意,这里不会创建新线程。这样run()就像一个普通方法一样。2、另外当一个线程启动之后,不能重复调用start(),否则会报IllegalStateException异常。但是可以重复调用run()方法。总结起来就是run()就是一个普通的方法,而start()会创建一个新线程转载 2022-02-14 17:18:30 · 4360 阅读 · 0 评论 -
@Async常见错误
起初在创建定时任务单线程是可用使用私有的修饰方法,后来改成多线程增加注解@EnableAsync@Async启动报错:Need to invoke method ‘task’ found on proxy for target class ,报错原因是因为可能多线程情况下不支持私有的修饰方法,从报错信息来看 应该是task找不到私有的定时任务方法,invoke通过反射获取不到,这样我们只需要改成公开的public就可以了,把private私有的换掉就行 //把private换成public即可转载 2022-01-24 14:50:11 · 880 阅读 · 0 评论 -
【多线程 二】线程创建和启动的四种方式(以及详解Thread和Runnable方式的优缺点)
1、继承Threadpublic class Threadextend extends Thread{ @Override public void run() { for(int i=0;i<=100;i++){ System.out.print("A"+i+ "\t"); } }}public class Main { public static void main(String[] args) {转载 2022-01-10 16:14:21 · 303 阅读 · 0 评论 -
Runnable和Thread比较
在线程使用过程中,我们肯定会用到Runnable与Thread,前者的实现方式是实现其接口即可,后者的实现方式是继承其类。两者实现方式带来最明显的区别就是,由于Java不允许多继承,因此实现了Runnable接口可以再继承其他类,但是Thread明显不可以。1.Runnable和Thread比较如上所述,Runnable相比Thread存在明显的优点,同时也是两者最大的区别。这点就不再做阐述,这里对于网络很多文章中存在的明显的错误文字总结进行一下论证:Runnable可以实现多个相同的程序代码的转载 2022-01-10 16:13:02 · 370 阅读 · 0 评论