Java中Runnable和Thread的区别
来源:互联网 发布:广西旅游数据统计 编辑:程序博客网 时间:2024/05/05 03:38
我们都知道Thread是继承,Runnable是接口
用的时候继承Thread或者实现Runnable接口,继承只能单继承,接口可以实现多个
第一种继承Thread
public class MThread extends Thread{ public int sum=30; @Overridepublic void run() { int i; for (i = 0; i < 10; i++) {sum--;} System.out.println(sum); System.out.println(Thread.currentThread().getName()); }public static void main(String[] args) {MThread m1=new MThread();m1.start(); m1.run();}}
打印结果:
20main10Thread-0
这个结果就说明啦run方法和start方法的区别
那就是 执行时所在的线程不同,这个大家切记
public class MRunnable implements Runnable{ public int sum=30;@Overridepublic void run() {// TODO Auto-generated method stub int i; for (i = 0; i < 10; i++) {sum--;} System.out.println(sum); System.out.println(Thread.currentThread().getName()); }public static void main(String[] args) { Thread m1=new Thread(new MRunnable());m1.start();m1.run();}}
20main10Thread-0
结果跟上一个一致
但是两个之间还是有很大的差距
把一个main方法改成:
public static void main(String[] args) {MThread m1=new MThread();m1.start(); MThread m2=new MThread();MThread m3=new MThread();m2.start();m3.start();}输出结果:
20Thread-220Thread-020Thread-1
也把第二个方法改:
</pre><pre code_snippet_id="1826232" snippet_file_name="blog_20160812_8_2808312" name="code" class="java">public static void main(String[] args) {MRunnable mr=new MRunnable(); Thread m1=new Thread(mr);m1.start();Thread m2=new Thread(mr);Thread m3=new Thread(mr);m2.start();m3.start();}
结果为:
20Thread-210Thread-10Thread-0
那么实现runnable接口是可以实现多线程数据共享的,
而继承Thread,多线程间数据是独立的
所以我们必须认识到start方法和run方法的区别
必须认识到 Thread和实现runnable接口的区别
0 0
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- java中thread和runnable的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- Java中Runnable和Thread的区别
- 【Android】Android Stdio创建App控件
- matlab文件夹前带加号表示是包package
- Struts2实现下载文件
- linux下的信号列表
- 个人网站 有兴趣的可以看看!
- Java中Runnable和Thread的区别
- spring配置 no matching editors or conversion strategy found 异常解决方案
- 使用MySQL命令行备份及恢复数据库
- KD Tree
- Android Studio下SVN的用法(1) - 初识SVN
- 编程语言分类
- MySQL优化——join的使用
- 【NOIP2016提高A组8.12】总结
- Zabbix常见的问题解答