Java 从另一个线程加载数据,它是线程安全的吗?

Java 从另一个线程加载数据,它是线程安全的吗?,java,Java,正在从另一个线程加载数据;线程安全 比如说 public static void main(String[] args) { Thread threadOne = new Thread(new Runnable() { @Override public void run() { loadContacts(); } }); Thread threadTwo = new

正在从另一个线程加载数据;线程安全

比如说

public static void main(String[] args) 
{

    Thread threadOne = new Thread(new Runnable()
    {

        @Override
        public void run() 
        {
            loadContacts();
        }

    });

    Thread threadTwo = new Thread(new Runnable()
    {

        @Override
        public void run() 
        {
            loadDefinitions();//Loads definitions
        }

    });

    threadOne.start();
    threadTwo.start();

}

代码显示将使用线程1加载列表,并在线程2上加载列表。这个线安全吗?如果我们有一个用于游戏逻辑访问两个列表的最终线程?

只有当您确保访问两个列表的最终线程等待
threadOne
threadTwo
完成时,这才是安全的,例如,在尝试从列表读取之前调用
threadOne.join()
threadTwo.join()


如果不希望最后一个线程等待,则必须添加一些同步,以确保线程安全。

只有确保访问这两个列表的最后一个线程等待直到
threadOne
threadTwo
都完成,这才是安全的,例如调用
threadOne.join()
threadTwo.join()
,然后再尝试从列表中读取


如果您不希望最后一个线程等待,那么您必须添加一些同步,以确保线程安全。

感谢回复感谢回复