【发布时间】:2014-05-31 07:46:51
【问题描述】:
我一直在阅读有关 java 中的同步的内容,但我有一个问题。 所以我看到的例子是一个类在本地对象上创建一个同步块。或同步方法。这两个都不适合我的情况。所以我有一个类的静态实例,它包含来自整个应用程序的所有数据。该类上的变量被创建为“私有”,我创建了 getter 来检索这些值。其中一些值一次只需要一个线程从应用程序中的不同类访问。由于它们是作为私有创建的,因此我使用如下同步块...
public class Music{
private ArrayList<Album> albums;
private static Music musicObject = new Music();
public ArrayList<Album> getAlbums()
{
return albums;
}
public Music getInstance()
{
return musicObject;
}
}
public class Album {
private Date releaseDate;
private String singer;
public Date getReleaseDate()
{
return releaseDate;
}
public String getSinger()
{
return releaseDate;
}
}
public class AlbumRetrieval
{
private Music data;
public AlbumRetrieval()
{
data = Music.getInstance();
synchronized(data.getAlbums())
{
//No other thread can access the albums variable in here
}
}
}
我可以通过方法调用访问外部变量来锁定/同步它吗?
【问题讨论】:
-
data.getAlbums()返回的是什么?请分享更多信息。 -
为什么要锁在外面的东西?
标签: java