线程间的数据共享

原创 2016年05月30日 18:51:07

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

通过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子类更加实用


线程间的数据共享与参数传递

线程间的数据共享 :文件共享、全局变量、堆区数据均共享。但是栈区不共享。 线程之间的参数传递及代码说明...

java中线程间数据共享和线程间通信

java中线程间数据共享和线程间通信(一)

【并发编程】线程范围内的数据共享,ThreadLocal,多线程间的数据共享

这几天生病了,所以学的比较少,只学习了关于线程中的线程范围数据共享,ThreadLocal以及多线程数据共享。 在这里记下我的理解和代码,其实理解都写在代码注释里了,个人觉得这样更加适合以后复习。 ...

多线程间的数据共享的几种实现方式比较

需求:设计4个线程,其中两个线程每次对j增加1,另外两个线程对j减少1. 实现数据共享的几种方式比较: 1.使用同一个runnable对象 如果每个线程执行的代码相同,那么可以使用同...
  • lwj0310
  • lwj0310
  • 2014年04月25日 11:28
  • 3099

多线程间的数据共享和对象独立,ThreadLocal详解

线程内的数据共享与对象独立,举例:张三给李四转钱,开启A线程去执行转钱这个动作,刚好同时王五给赵六转钱,开启B线程去执行转钱,因为是调用的同样一个动作或者说对象,所以如果不能保证线程间的对象独立,那么...
  • lwj0310
  • lwj0310
  • 2014年04月25日 11:21
  • 436

Qt学习:线程间共享数据

Qt线程间共享数据主要有两种方式: 使用共享内存。即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的;使用singal/slot机制,把...

无锁实现线程间共享数据

这几天比较没那么忙,review了一下以前写的一个linux网络库,看得我略微有点纠结,大概流程如下图:         MainThread创建连接fd及处理相关的数据结构,然后加到链表Shar...
  • LIFEXX
  • LIFEXX
  • 2016年10月27日 14:39
  • 396

详解 Qt 线程间共享数据

转自:http://mobile.51cto.com/symbian-272626.htm Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容。Qt线程间共享数据主要有两种方式: 使用共享...
  • fqx111
  • fqx111
  • 2013年06月04日 14:13
  • 575

详解 Qt 线程间共享数据

使用共享内存。即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的。 Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容。Qt线程间共...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线程间的数据共享
举报原因:
原因补充:

(最多只允许输入30个字)