共享数据是并发程序最关键的特性之一。对于无论是继承Thread类的对象,还是实现Runnable接口的对象,这都是一个非常周重要的方面。
如果创建了一个实现Runnable接口的类的对象,并使用该对象启动了一系列的线程,则所有这些线程共享相同的属性。换句话说,如果一个线程修改了一个属性,则其余所有线程都会受此改变的影响。
有时,我们更希望能在线程内单独使用,而不和其他使用同一对象启动的线程共享。Java并发接口提供了一种很清晰的机制来满足此需求,该机制称为本地线程变量。该机制的性能也非常可观。
知其然
按照下面所示步骤,完成示例程序。
1.首先,实现一个有上述问题的程序。创建一个名为UnsafeTask的类,并且实现Runnable接口。在类中声明一个java.util.Date类型的私有属性。代码如下:
2.实现UnsafeTask的run()方法,该方法实例化startDate属性,并将其值输出到控制台上。休眠随机一段时间,然后再次将startDate属性的值输出到控制台上。代码如下:
try {
TimeUnit.SECONDS.sleep((int) Math.rint(Math.random() * 10));
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.printf(\"Thread Finished: %s : %s\\n\",
Thread.currentThread().getId(), startDate);
}
本文地址:https://www.stayed.cn/item/1290
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我