import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/**
*
* 主/子线程间共享数据.<br>
* @author gongqiang <br>
* @version 1.0.0 2021年6月9日<br>
* @see
* @since JDK 1.5.0
*/
public class PrimarySubThreadShared {
/**
* 示例.
* @param args
*/
public static void main(final String[] args) throws InterruptedException, ExecutionException {
final String name = "武则天";
final Date brith = new Date();
// 创建Result对象
final Result r = new Result();
r.setName(name);
r.setBrith(brith);
final ExecutorService executor = Executors.newFixedThreadPool(1);
// 提交任务
final Future<Result> future = executor.submit(new Task(r), r);
final Result fr = future.get();
// 下面等式成立
System.out.println("fr==r:" + (fr == r));
System.out.println("fr.getName()==name:" + (fr.getName() == name));
System.out.println(fr.getBrith().equals(PrimarySubThreadShared.getDate()));
}
public static Date getDate() {
try {
return new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("1987-04-02 12:00:00");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
class Task implements Runnable {
private final Result r;
// 通过构造器传入result
public Task(final Result r) {
this.r = r;
}
public void run() {
// 操作result.
final String name = r.getName();
r.setBrith(PrimarySubThreadShared.getDate());
}
}
class Result {
/**
* 姓名.
*/
private String name;
/**
* 生日.
*/
private Date brith;
/**
* 获取name.
* @return the name
*/
public String getName() {
return name;
}
/**
* 设置name.
* @param newName the name to set
*/
public void setName(String newName) {
name = newName;
}
/**
* 获取brith.
* @return the brith
*/
public Date getBrith() {
return brith;
}
/**
* 设置brith.
* @param newBrith the brith to set
*/
public void setBrith(Date newBrith) {
brith = newBrith;
}
}