我对多线程有疑问。
假设我想同时执行两个动作,就像我想将朋友记录添加到文件中一样,并同时使用并发线程显示好友记录。
我创建了一个启动的单个线程,显示由它完成,在启动线程的main方法中,我执行了将记录保存到文件的操作。
这两个过程是否同时发生。
这是我的代码的一部分。
Runnable2 r2 = new Runnable2(L) ;
Thread t2 = new Thread(r2);
t2.start();
F.addElement(L);
oos1.writeObject(F);
答案 0 :(得分:2)
没有同时发生的事情。一个将在另一个之前发生,但是,如果您不使用显式同步机制,则无法知道将首先执行哪个(它取决于操作系统,硬件上,JVM上)。很可能如果你运行程序100次,99次事件1将在事件2之前运行,而最后一次发生反过来,你会得到其中一个难以重现的错误。
你真的不应该指望顺序,你应该在使用多线程时使用同步机制。