Jak uruchomić dwie funkcje w tym samym czasie ?

Jak uruchomić dwie funkcje w tym samym czasie ?
XI
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:231
0

Jak uruchomić dwie funkcje w tym samym czasie ?
np w JavaScript da się zrobić tak:

Kopiuj
timeout("funkcja",1000);
edytowany 2x, ostatnio: Xix
SO
  • Rejestracja:ponad 10 lat
  • Ostatnio:około rok
0

Skorzystać z wątku.

Zobacz pozostałe 5 komentarzy
SO
Żebyś miał się o co pytać.
Wizzie
grubo, czy druga strona ma lepszy pojazd?
HE
Nie widzę sensu zniżania się do tego poziomu.
XI
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:231
0

Chcę by od razu mi się coś robiło i obok tego coś innego.

edytowany 1x, ostatnio: Xix
niezdecydowany
niezdecydowany
w javie tak sie nie da.
XI
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:231
0

Jak to. A jak są zrobione timery ? One działają podczas gdy funkcja main się wykonuje. No wiem że to jest od javy ale jakbym chciał "monitorować" jakieś kila rzeczy to musi być jakaś możliwość. PS: Jaki Executor Framework ? Co to ?

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:18 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
1

Executor Framework to zestaw narzędzi pozwalających na programowanie współbieżne, czyli "robienie dwóch rzeczy na raz".


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
1

Do timerów to konkretnie ScheduledExecutorService

XI
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:231
0

No i w Java tego tak się po prostu nie da ?

2
Xix napisał(a):

Jak uruchomić dwie funkcje w tym samym czasie ?
np w JavaScript da się zrobić tak:

Kopiuj
timeout("funkcja",1000);

JavaScript jest jednowatkowy, programista nie zrobi 2 rzeczy w tym samym czasie. Ten kod startuje timera i po uplywie sekundy funkcja zostanie wywolana w tym samym watku co reszta kodu, moze nawet dzielic ten watek z kodem do pobierania obrazkow, obslugi styli itp. i zablokuje na czas wykonania tej funkcji reszta kodu. Przyklad z d**y.

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:18 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
1

W JavaScript nie masz wielowątkowości jako takiej zatem i rozwiązania są inne. Najbliższe temu co pokazałeś w JS jest:

Kopiuj
new Timer().schedule(new TimerTask() {
			@Override
			public void run() {
				System.out.println("Po sekundzie");
			}
		}, 1000L);

Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
1
Xix napisał(a):

No i w Java tego tak się po prostu nie da ?

Da i to na wiele sposobow. Np:

Kopiuj
new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("dupa"); } }, 1000);

(nie wiem czy dziala, mozliwe ze sie pomylilem w nawiasach itp.)

XI
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:231
0

To jest jedyny sposób ( piszecie że nie więc dajcie jeszcze kilka na wszelki wypadek)? Może być. Ale jak sprawić żeby to się wykonało tylko raz i od razu bez tego "1000" (no bo 0 to chyba nie ). Nie ma w tym nic co mówi który raz się kod wykonuje (no bo tak to bym to if-em załatfił )

edytowany 1x, ostatnio: Xix
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:18 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
1

Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
XI
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:231
0

A co to jest newFixedThreadPool(10); i czy trzeba coś importować (eclipse i tak mi podpowie) ?
PS: Właśnie o to mi chdziło :)

edytowany 1x, ostatnio: Xix
1

Nie da sie zrobic tak, zeby byla pewnosc ze cos sie wykona od razu, rownolegle. To zalezy od wielu rzeczy: OS, implementacji Javy, jaki scheuduler dany OS uzywa itp. Np. jesli zrobisz tak:

Kopiuj
System.out.println("line a");
new Thread(new Runnable() { @Override public void run() { System.out.println("line b"); } }).start();
System.out.println("line c");

to jedyne co jest pewne jest to, ze "line a" bedzie wypisane przed "line c", oraz ze "line b" bedzie wypisane po "line a". Kolejnosci "line b" i "line c" w stosunku do siebie nie jestes w stanie okreslic bez dodatkowej synchronizacji. Ale poki co to tematy dla ciebie zbyt zaawansowane.

XI
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:231
0

Dobra, dzięki. A co do tematów zaawansowanych to sobje kupię książkę chyba. Możecie mi doradzić jaką. No bo podstawy umiem czyli pentle, klasy, objekty itp.

SO
"Pentle", klasy i "objekty" to są podstawy podstaw samych podstaw, więc na razie nie bierz się za zaawansowane rzeczy. Na początek to zainwestuj w słownik bo w każdej wiadomości robisz kilka błędów ortograficznych.
Wizzie
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 8 lat
1

Java Concurrency in Practice, ale IMO, widząc twoje obecne wątki, zostaw to sobie na trochę później i popracuj nad podstawami.

XI
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:231
0

Czyli ? Nad czym konkretnie ?

azalut
  • Rejestracja:około 12 lat
  • Ostatnio:ponad rok
  • Postów:1129
1

@Xix nad intensywnym przysiedzeniem nad jednym, konkretnym językiem, najlepiej ukierunkowanym na jedną specjalizację, która ci sie podoba, żebyś z przyjemnościa i efektywnie złapał podstawy które wyjaśnią ci problemy które aktualnie posiadasz

Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 8 godzin
1

Książka: http://helion.pl/ksiazki/java-podstawy-wydanie-ix-cay-s-horstmann-gary-cornell,javpd9.htm
Poza tym jest bardzo dobre Java Tutorials, które zawsze opisuje świeżą wersję Javy: https://docs.oracle.com/javase/tutorial/


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
azalut
@Xix na totalny start to nawet po pl możesz się uczyć
XI
no byłoby dobrze bo po angielsku to nie umiem świetnie (znam niektóre słowa ale na internetowych stronach napisanych po angielsku nie wszystko rozumiem)
azalut
@Xix to akurat masz czas ucząc się z polskich źródeł, żeby nadrobić angielski, bo serio: bez niego na pewnym etapie nadejdzie stagnacja
XI
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:231
0

No a co to są te podstawy. No bo pętle objekty klasy itp. to są podstawy z podstaw tak ? To czego mam się uczyć ? Samych nowych klas czy dalej czegoś "technicznego" ?

azalut
  • Rejestracja:około 12 lat
  • Ostatnio:ponad rok
  • Postów:1129
0

ucz się podstawowych elementów składni języka: przyjmijmy, że będzie to Java, jakieś fory/while/switch jak to działa, później możesz troche "ósemki" tj lambda, method reference
później oop: obiekty, klasy, klasy anonimowe, klasy abstrkacyjne, interfejsy, dla ósemki też: funkcje, FunctionalInterface itp

  • ważne, podstawowe klasy javy, jakieś StringBuildery, może jakieś okienka (mi sie na tym fajnie uczylo podstaw), metody do "obróbki" stringów, Timer, Comparable, Runnable, uruchomić jakiś wątek, zobaczyć jak to wygląda

jednym dwoma słowemami "pobawić się" językiem :P

edytowany 1x, ostatnio: azalut
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 8 godzin
0
Xix napisał(a):

No a co to są te podstawy. No bo pętle objekty klasy itp. to są podstawy z podstaw tak ? To czego mam się uczyć ? Samych nowych klas czy dalej czegoś "technicznego" ?

Przerób całą tą książkę co ci podałem "Java. Podstawy. Wydanie IX Autorzy: Cay S. Horstmann, Gary Cornell" i będziesz znał podstawy. Jak coś znasz to i tak poczytaj od deski do deski. Jedyną rzeczą, którą możesz pominąć są 10.3 Aplety, bo aplety są mocno blokowane w nowych wersjach Javy i chyba miałbyś problem z ich przetestowaniem.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
XI
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:231
0

Ja wiem co to switch itp. Nie rozumiem:
klasy abstrkacyjne
kalsy anonimowe
FunctionalInterface
Comparable
Runnable
lambda
method reference
StringBuildery ( chyba nigdy tego nie widziałem )

Ale tak źle ze mną nie jest że bym nie znał:
Timer
obróbka stringów (jeśli chodzi o substring itp. to znam już od dawna bo na YouTube są świetne kursy C++)
klasy
obiekty
interfejsy

Wiele znam ale może to nie jest jeszcze ułożone bo C++ trochę się różni. Wiem jak się tworzy okna w javax.swing

Zaczne się jeszcze uczyć C#. Ma tyle uproszczeń że nie wiem czy nie jest lepszy niż Java.
I czy konstruktor zawsze się wywołuje kiedy tworzę objekt czy trzeba zrobić tak: klasa objekt = new klasa(); ? Wiem że to podstawy ale nigdy tego nie sprawdzałem a często programów nie pisze.

LW
Zaręczam Cię, że obróbka Stringów (regexpy) na poziomie OCPJP są dużo trudniejsze od tego co wymieniłeś w "Nie rozumiem".
SO
Połowa rzeczy z kategorii umiem i nie umiem wzajemnie się wyklucza. Piszesz, że umiesz klasy, ale nie rozumiesz klas abstrakcyjnych, ani anonimowych. Nie wiesz co to Comparable/Runnable, ale dalej piszesz, że znasz interfejsy... Przysiądź w końcu do jakiegoś kursu/książki dla początkujących i przerób ze zrozumieniem.
XI
Dopiero jak sobie kupię książkę :) ale to już blisko tylko nie wiem czy Java czy C#. Co wybrać ? I dajcie jakiś link do kursu bo ja musiałbym wszystko w google wpisywać a tak to by było po kolei. Zresztą nie wszystkie kursy są dobre.
LW
Sciagnij sobie cos do OCAJP
0
Xix napisał(a):

Zaczne się jeszcze uczyć C#. Ma tyle uproszczeń że nie wiem czy nie jest lepszy niż Java.

Lepszy niz Java? Zdecydowanie tak (moim zdaniem). Prostszy? Latwiejszy do nauki? Zdecydowanie nie - ma znacznie wiecej pojec, wiecej mozliwosci, skladnia bardziej skomplikowana bo i sam jezyk wspiera wiecej. async, yield, propertiesy z prawdziwego zdarzenia, partial classes, static classes, delegaty, eventy - mozna wyliczac bez liku.

XI
Wylicz wszystkie :) delegaty to coś ajkby wskażniki ale bezpiczniejsze (przed momentem sptałem coci wiki :) ). Reszty nie rozumiem . Ale: klasa objekt = new klasa() { napis="coś" } ;
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 8 godzin
0

Niewiele jeszcze umiesz. A do C++ nie ma sensu robić zbyt silnych analogii. Zwykle różne platformy mają inne filozofie, więc zbyt mocne wyszukiwanie analogii doprowadzi do zamieszania w głowie.

W Javie by stworzyć obiekt trzeba użyć słówka new praktycznie zawsze. Czasem jest to jednak ukryte gdzieś w metodzie lub obiekt może zostać wstrzyknięty (jeśli używasz wstrzykiwania zależności). Zawsze jednak obiekt jest tworzony za pomocą new albo, rzadko i głównie we frameworkach, za pomocą refleksji (Class.newInstance lub podobne).


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 2x, ostatnio: Wibowit
XI
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:231
0

Czyli konstruktor zawsze się wykona ?
NP:

Kopiuj
 public class x
 {
    int z;
    x()
    {
       z= 10 ;
    }
 }

x y ;

Co jest w z ?
Teraz się pogubiłem :)

edytowany 2x, ostatnio: Xix
0

W z nic nie ma, bo nie ma zadnego z. Ty tylko zdeklarowales referencje na x, ale nie utworzyles zadnej instancji. Java to nie cpp.

XI
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 lat
  • Postów:231
0

I wszystko stało się jasne. A jak to działa W C# ? Tak samo ?
Dzięki.

XI
Chwała wam !
katelx
  • Rejestracja:około 10 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Hong Kong
0

(ubolewam bo prawie nie zauwazylam nowego watku autorstwa pana @Xix).
co do pewnosci wywolania konstruktora w c# to mozesz sie troche przeliczyc, przy deserializacji konstruktor nie jest wolany wiec jesli twoja klasa wspiera serializacje to miej sie na bacznosci.

ZA
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 8 lat
0

@katelx nie bardzo rozumiem. Serializujesz obiekt, który już jest utworzony i ma jakiś stan (tak jest i w c# i w javie). W takiej sytuacji po co miałby się uruchamiać jeszcze raz?

Koziołek
deserializacji, a nie serializacji
ZA
a to nie jest tak że deserializujesz obiekty wcześniej zserializowane?
Koziołek
deserializacja === odczyt.
katelx
@zadroozyn zdecydowanie. czyli scenariusz jest nastepujacy 1) uzywasz konstruktora aby stworzyc obiekt 2) serializujesz go 3) deserializujesz (i w tym momencie konstruktor nie jest odpalany

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.