如何在以下 lambda exp 中添加同步?
Posted
技术标签:
【中文标题】如何在以下 lambda exp 中添加同步?【英文标题】:how to add synchronization in following lambda exp? 【发布时间】:2021-12-25 16:23:32 【问题描述】:
List<Integer> list = new ArrayList<>(10000);
IntStream.range(1, 10000).forEach(list::add);
Thread reader = new Thread(() ->
list.forEach(i -> System.out.println("r " + i));
, "t1");
同步块是否可以用于某些用 lambda 表达式编写的代码块。关于以下代码 sn -p :
【问题讨论】:
您忘记添加代码 sn-p。 【参考方案1】:可以在 Java Lambda 表达式和匿名类中使用同步块。
注意:您忘记添加代码 sn-p,因为您的代码中没有代码 sn-p 可见,所以我会添加自己的代码 sn-p 以明确我的观点。
import java.util.function.Consumer;
public class SynchronizedExample
public static void main(String[] args)
Consumer<String> func = (String param) ->
synchronized(SynchronizedExample.class)
System.out.println(
Thread.currentThread().getName() +
" step 1: " + param);
try
Thread.sleep( (long) (Math.random() * 1000));
catch (InterruptedException e)
e.printStackTrace();
System.out.println(
Thread.currentThread().getName() +
" step 2: " + param);
;
Thread thread1 = new Thread(() ->
func.accept("Parameter");
, "Thread 1");
Thread thread2 = new Thread(() ->
func.accept("Parameter");
, "Thread 2");
thread1.start();
thread2.start();
【讨论】:
非常感谢兄弟,我得到了一切。 不客气@TanmayMandaogane以上是关于如何在以下 lambda exp 中添加同步?的主要内容,如果未能解决你的问题,请参考以下文章
“exp: command not found” 如何将 expo cli 添加到路径?
如何使用 lambda 表达式将 DataTable 记录添加到列表中? [复制]