Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-高级并发问题_Java_Multithreading_Concurrency - Fatal编程技术网

Java-高级并发问题

Java-高级并发问题,java,multithreading,concurrency,Java,Multithreading,Concurrency,我有两个线程,ThreadA(Main),方法是j()和k(){…j()…},还有第二个线程,ThreadB。ThreadA随机调用方法k(),其中包括调用方法j()ThreadB随机调用方法j() 现在方法k()和j()不能同时执行,因为它们共享变量 如果ThreadA当前未执行方法k(),如何确保ThreadB只能调用方法j()?而且ThreadB将在ThreadA完成执行k()后执行j() 我读过关于synchronized关键字的文章,但似乎它只能涵盖一种方法。(例如ThreadX和Th

我有两个线程,
ThreadA
(Main),方法是
j()
k(){…j()…}
,还有第二个线程,
ThreadB
。ThreadA随机调用方法
k()
,其中包括调用方法
j()
ThreadB
随机调用方法
j()

现在方法
k()
j()
不能同时执行,因为它们共享变量

如果
ThreadA
当前未执行方法
k()
,如何确保
ThreadB
只能调用方法
j()
?而且
ThreadB
将在
ThreadA
完成执行
k()
后执行
j()


我读过关于synchronized关键字的文章,但似乎它只能涵盖一种方法。(例如ThreadX和ThreadY都是访问方法
m()
)。

我将使用同步语句和内部锁的机制。你可以读到它。您可以使用指向同一对象的同步语句同步这两种方法。

请与我们共享您的代码。此外,锁是可重入的: