关闭

线程间的数据共享

156人阅读 评论(0) 收藏 举报
分类:

线程间的数据共享可以通过两种方式

通过Thread子类创建进程的方法

通过Runnable接口实现进程之间的共享



比较这两种实现进程共享的区别


Thread子类创建进程:

package practice4;

public class ThreadSale extends Thread{
	private int tickets=10;

	public void run(){
		while(true){
			if(tickets>0)
				System.out.println(getName()+" 售机票第"+tickets--+"号");
			else
				System.exit(0);
		}
	}
}

public class App11_4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ThreadSale t1=new ThreadSale();
		ThreadSale t2=new ThreadSale();
		ThreadSale t3=new ThreadSale();
		t1.start();
		t2.start();
		t3.start();
	}

}

运行结果:

Thread-0 售机票第10号
Thread-2 售机票第10号
Thread-1 售机票第10号
Thread-2 售机票第9号
Thread-0 售机票第9号
Thread-2 售机票第8号
Thread-1 售机票第9号
Thread-2 售机票第7号
Thread-2 售机票第6号
Thread-2 售机票第5号
Thread-0 售机票第8号
Thread-2 售机票第4号
Thread-2 售机票第3号
Thread-2 售机票第2号
Thread-2 售机票第1号
Thread-1 售机票第8号
Thread-1 售机票第7号
Thread-1 售机票第6号
Thread-1 售机票第5号
Thread-1 售机票第4号
Thread-1 售机票第3号
Thread-1 售机票第2号
Thread-1 售机票第1号
Thread-0 售机票第7号
Thread-0 售机票第6号
Thread-0 售机票第5号
Thread-0 售机票第4号
Thread-0 售机票第3号
Thread-0 售机票第2号


Runnable接口创建进程:


package practice4;

public class ThreadSale1 implements Runnable{
	private int tickets=10;
	
	public void run(){
		while(true){
			if(tickets>0)
				System.out.println(Thread.currentThread().getName()+"  售机票第"+tickets--+"号");
			else
				System.exit(0);
		}
	}
}


public class App11_5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ThreadSale1 t=new ThreadSale1();
		Thread t1=new Thread(t,"第一售票窗口");
		Thread t2=new Thread(t,"第二售票窗口");
		Thread t3=new Thread(t,"第三售票窗口");
		t1.start();
		t2.start();
		t3.start();
	}

}


运行结果:

第二售票窗口  售机票第9号
第三售票窗口  售机票第8号
第一售票窗口  售机票第10号
第三售票窗口  售机票第6号
第二售票窗口  售机票第7号
第三售票窗口  售机票第4号
第一售票窗口  售机票第5号
第三售票窗口  售机票第2号
第二售票窗口  售机票第3号
第一售票窗口  售机票第1号

可以看出Runnable接口比Thread子类更加实用


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5883次
    • 积分:224
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章分类