线程thread和runnable区别,thread和runnable两种实现方式优缺点?
00-1010I。通过继承线程II创建一个线程。实施可运行的创建检查III。比较两种创作方法3.1。多重继承3.2。数据共享。线程池IV。源代码分析。
00-1010通过继承线程类,创建一个线程。在主线程中,调用start使线程处于可运行状态,让系统运行线程。
Class my thread扩展thread { @ override public void run(){ system . out . println( execution thread );} }公共类ThreadTest { public static void main(String[]args){ Thread Thread=new MyThread();thread . start();}}
00-1010通过实现runnable接口来创建线程,需要将runnable实现类作为线程构造方法的参数来运行这个线程。
类my thread实现runnable { @ override public void run(){ system . out . println(执行线程);} } public class ThreadTest { public static void main(String[]args){ Runnable thread=new MyThread();Thread thread1=新线程(Thread);thread 1 . start();}}这里需要注意的是,runnable的实现类没有start()方法,只有run()方法。
如果运行这个run方法,仍然可以运行thread方法。但是,这个方法不是在新线程中运行,而是在主线程中运行。
类my thread实现runnable { @ override public void run(){ system . out . println(此方法在: Thread.currentThread()中运行。getName());} } public class ThreadTest { public static void main(String[]args){ Runnable run=new MyThread();System.out.println(此方法在: thread.currentthread()中执行。getname());run . run();//Thread thread1=新线程(运行);//thread 1 . start();}}运行结果:
如果注释被打开并且run()被注释掉,结果如下:
目录
一、通过继承Thread创建线程
Java不支持类的多重继承,但支持接口的多重实现,所以Runnable在使用上更加灵活。
00-1010如果一个类继承了Thread,就不适合资源共享。但如果实现了Runable接口,就很容易实现资源共享。如果一个线程中有一个成员变量,Runnable创建的线程可以被多个线程访问,但是线程不能。
为什么?Thread创建的线程每次都是new的新线程对象,线程对象之间的成员变量是不共享的。另一方面,Runnale可以用作Thread类的参数。可以再创建几个线程类,把Runnale作为参数,让多个线程一起运行。
public class ThreadTest { public static void main(String[]args){ Runnable run=new MyThread();Thread thread1=新线程(运行);Thread thread2=新线程(运行);Thread thread3=新线程(运行);thread 1 . start();thread 2 . start();thread 3 . start();}}
00-1010线程池只能放入实现可运行或可调用类的线程中,不能直接放入继承Thread的类中。
00-1010当我们进入Thread方法时,我们能看到的线程也实现了Runnable接口。
使用Thread一定也实现了他的run方法。
可以看出,在这个run方法中,如果目标不为空,执行目标的run方法,那么目标是什么?
进去之后发现是一个可运行的接口,那么是怎么初始化的呢?突然,当你执行runnable实现类时,你将通过构造函数传递它。让我们来看看构造函数。
继续,你可以看到它确实在这里被初始化了。
所以Runnbale接口的run方法是通过Thread的成员变量来执行的。
关于Java中Thread和Runnable创建线程方式的比较,本文到此结束。关于Java中在Thread和Runnable之间创建线程的更多信息,请搜索热门IT之前的文章或者继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。