как добавить синхронизацию в следующий лямбда-пример?

#java #multithreading #list #lambda #synchronization

Вопрос:

 { Listlt;Integergt; list = new ArrayListlt;gt;(10000);   IntStream.range(1, 10000).forEach(list::add);  Thread reader = new Thread(() -gt; {  list.forEach(i -gt; System.out.println("r "   i));  }, "t1"); }  

Могут ли синхронизированные блоки использоваться для некоторых блоков кода, написанных в лямбда-выражении . В отношении следующего фрагмента кода :

Комментарии:

1. Вы забыли добавить фрагмент кода.

Ответ №1:

Можно использовать синхронизированные блоки внутри лямбда-выражения Java и внутри анонимных классов.

Примечание: Вы забыли добавить фрагмент кода , так как в вашем коде не видно фрагмента кода, поэтому я добавляю свой собственный фрагмент кода, чтобы прояснить свою точку зрения.

 import java.util.function.Consumer;  public class SynchronizedExample {   public static void main(String[] args) {   Consumerlt;Stringgt; func = (String param) -gt; {   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(() -gt; {  func.accept("Parameter");  }, "Thread 1");   Thread thread2 = new Thread(() -gt; {  func.accept("Parameter");  }, "Thread 2");   thread1.start();  thread2.start();  } }  

Комментарии:

1. большое тебе спасибо, брат, у Меня все есть.

2. добро пожаловать @TanmayMandaogane