本文主要总结线程共享数据的相关知识,主要包括两方面:一是某个线程内如何共享数据,保证各个线程的数据不交叉;一是多个线程间如何共享数据,保证数据的一致性。
线程范围内共享数据
自己实现的话,是定义一个地图,线程为键,数据为值,表中的每一项即是为每个线程准备的数据,这样在一个线程中数据是一致的。
例子
包com.iot.thread; 进口java.util.HashMap; 进口java.util.Map; 进口java.util.Random;/* * *由布莱恩> 包com.iot.thread; 进口java.util.Random;/* * *由布莱恩> 包com.iot.thread;/* * *由布莱恩2016/2/4。 */公开课MutiThreadShareData { 私有静态MutiShareData MutiShareData=https://www.yisu.com/zixun/new MutiShareData (); 公共静态void main (String [] args) { for (int i=0;我+ +){<3; 新线程( 新的Runnable () { @Override 公共空间run () { System.out.println (Thread.currentThread () + ": {j从“+ mutiShareData.getJ () + " + ": " + mutiShareData.increment () + "} "); } } ).start (); } for (int i=0; i<2,我+ +){ 新线程( 新的Runnable () { @Override 公共空间run () { System.out.println (Thread.currentThread () + ": {j从“+ mutiShareData.getJ () +”——:“+ mutiShareData.decrement () + "} "); } } ).start (); } } }/* * *将共享数据封装在另一对象中(操作数据的方法也在该对象完成) */类MutiShareData { 私人int j=0; 公共同步int increment () { 返回+ + j; } 公共同步int减量(){ 返回——j; } 公共同步int getJ () { 返回j; } 公共同步空白setJ (int j) { 这一点。j=; } }
总结
以上就是本文关于Java编程多线程之共享数据代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!