Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package spoj;
- import java.util.ArrayList;
- public class Main {
- public static void main(String[] args) throws InterruptedException {
- Letters letters = new Letters("ABCD"); // Konstruktor - podaję tutaj
- // dane z treści
- for (Thread t : letters.getThreads()) { // pętla for-each, przechodze po
- // wszystkim "odpalając" wątki,
- // tworze ciag
- t.start();
- }
- for (Thread t : letters.getThreads()) { // petla for-each, przechodze po
- // wszystkim tym razem
- // "nazywając" wątki
- System.out.println(t.getName());
- }
- Thread.sleep(5000); // usypiam wątki
- letters.print(); // wypisuje ciag
- System.out.println("Program skończył działanie");
- }
- }
- class Letters {
- ArrayList<Thread> threads = new ArrayList<Thread>(); // lista do
- // przechowywania
- // wątków
- /*
- * Konstruktor klasy Latters, jako argument przyjmuje ciąg znaków (w
- * przykładzie ABCD) potem iteruje po długości tworząc:
- *
- * a)
- *
- * Thread A Thread B ... Thread n
- *
- * b)
- *
- * Generuje ten ciąg (po każdej literze dodaje wygenerowany podciąg)
- */
- public Letters(String c) {
- for (int i = 0; i < c.length(); i++) {
- String letter = c.charAt(i) + "";
- Runnable thread = () -> { // wyrażenie lambda - implementuje
- // interfejs Runnable
- for (int j = 0; j < c.length(); j++) {
- try {
- // System.out.print(letter);
- total += letter;
- Thread.sleep(1000);
- } catch (InterruptedException e) { // w razie
- // nieprzewidzianej
- // ewentualności wyjątek
- // wypisze ze stosu kod
- // błedu
- e.printStackTrace();
- break;
- }
- }
- };
- threads.add(new Thread(thread, "Thread " + letter));
- }
- }
- public ArrayList<Thread> getThreads() { // tak sobie biorę kolejne wątki do
- // pracy
- return threads;
- }
- public void print() { // wypisuje na ekran wygenerowany ciąg
- System.out.println(total);
- }
- private String total = ""; // String do przechowywania generowanego ciągu -
- // w przykładzie ACDACDBCDACD
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement