Thread 和 Runable 区别
来源:互联网 发布:贪吃飒淘宝小店网址 编辑:程序博客网 时间:2024/05/17 04:57
首先 Thread是类,Runable是接口。
一是写一个类继承自Thread类,然后重写里面的run方法,用start方法启动线程
二是写一个类实现Runnable接口,实现里面的run方法,用new Thread(Runnable target).start()方法来启动
查看源码可以发现 Thread也是实现的Runable
publicclass Thread implements Runnable {
两个都可以实现多线程编程,但是基于java是单继承,所以实现Runable更灵活。并且Runable可以简单的实现变量的线程间共享。
继承Thread
static class MyThread1 extends Thread{ private int ticket=10; private String threadName; public MyThread1( String threadName) { this.threadName = threadName; } @Override public void run() { for(;ticket>0;ticket--){ System.out.println(threadName+"卖出火车票号:"+ticket); } } }
public static void main(String[] args){ MyThread1 thread1=new MyThread1("从线程1"); MyThread1 thread2=new MyThread1("从线程2"); thread1.start(); thread2.start();// MyThread2 thread3=new MyThread2("Runable实现类");// new Thread(thread3).start();// new Thread(thread3).start(); }
执行结果:
实现Runable 实现共享
static class MyThread2 implements Runnable{ private int ticket=10; private String threadName; public MyThread2( String threadName) { this.threadName = threadName; } @Override public void run() { for(;ticket>0;ticket--){ System.out.println(threadName+"卖出火车票号:"+ticket); } } }public static void main(String[] args) {// MyThread1 thread1=new MyThread1("从线程1");// MyThread1 thread2=new MyThread1("从线程2");// thread1.start();// thread2.start(); MyThread2 thread3 = new MyThread2("Runable实现类"); new Thread(thread3).start(); new Thread(thread3).start(); }执行结果:
虽然这样可以共享但是这样也存在数据不同步的现象:
两个线程可能读到的ticket不是同步的;
这就需要在实现类里加入同步的代码:
{ synchronized (this){ for (; ticket > 0; ticket--) { System.out.println(threadName + "卖出火车票号:" + ticket); } }}
0 0
- Thread 和 Runable 区别
- thread 和runable 区别
- thread和runable的区别
- Thread和Runable的区别
- Runable和thread的区别
- thread和runable的区别
- runable和thread的区别
- Thread和Runable的区别
- Runable和thread的区别(多线程必须用Runable)
- Runable和thread的区别(多线程必须用Runable)
- Runable和thread的区别(多线程必须用Runable)
- Runable和thread的区别(多线程必须用Runable)
- Runable和thread的区别(多线程必须用Runable)
- Java中Thread和runable的区别
- android Thread和Runable区别 精讲
- android Thread和Runable区别 精讲
- Thread 与Runable区别
- Thread和runable
- java修炼tutorial
- 一步一步开始WebSercie(详解HelloWorld程序)
- java学习笔记(一)用程序来做计算
- UIWebView加载POST请求 加载html
- 机器学习算法学习笔记
- Thread 和 Runable 区别
- 《Linux 环境C程序设计》阅读笔记
- ajax跨域访问
- 在Mac上配置adb命令
- 第二周 项目3 体验复杂度
- RMQ (Range Minimum/Maximum Query)算法
- 实战chmod函数 fchmod fchmodat
- oracle存储过程中数组申明和遍历
- MyEclipse使用总结——MyEclipse10安装SVN插件