Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-07-2015, 14:33   #1
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
[JAVA] Sincronizzare un processo con l'orario attuale + intervallo

Ciao! Posto il codice per rendere l'idea di quello che voglio fare.
Codice:
final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleWithFixedDelay(new Runnable(){
	@Override
	public void run(){
		esegui();
	}
  }, 0, 1, TimeUnit.MINUTES);
Il metodo esegui(), ad ogni minuto viene processato partendo dall'orario in cui è lanciato il programma.
E questo non va bene, perché lo devo sincronizzare con un altra applicazione esterna (indipendente).
Quindi ho bisogno di fissare un orario e da lì partire con un intervallo di 60 secondi...
Come impostereste la cosa?

Grazie!
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 15:10   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Se devi sincronizzare con un'applicazione esterna, fissare un orario di avvio è concettualmente sbagliato. Chi ti garantisce che l'altra applicazione partirà a quell'ora?
Devi trovare un modo per far comunicare i 2 processi. Di metodi ce ne sono tanti dal più barbino tipo file watcher sul secondo processo e scrittura file sul primo, ad uno qualunque dei vari metodi IPC: Pipe, RMI, JMS, Socket, Webservice SOAP/REST,...
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 15:46   #3
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Il secondo argomento di scheduleWithFixedDelay rappresenta un delay iniziale. Calcola quante unità di tempo devi aspettare, nel tuo caso minuti, e passalo come valore.

Come ha detto tomminno se puoi trova un'altro modo per far comunicare i due programmi. Può sembrare semplice ma avere a che fare con il "tempo" è incredibilmente complicato.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 16:19   #4
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
no... nonononono no... no...
ehmmm.... non ho modo di far comunicare le due applicazioni... voglio dire...
no nonononono no... Mi rifiuto!!!
Credetemi è un lavoraccio e ho già pochi capelli... Volete che li perda completamente??

Ma scusate non esiste, che ne so, un timer che all'x secondo, preciso e spaccato fa quello che deve fare indipendentemente da quando avvio il programma??
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 16:25   #5
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Il secondo argomento di scheduleWithFixedDelay rappresenta un delay iniziale. Calcola quante unità di tempo devi aspettare, nel tuo caso minuti, e passalo come valore.
Scusa eh, ma il codice sopra non fa già quello che hai detto?
Ho un intervallo, 1 minuto per l'esattezza. Ma questo intervallo è calcolato da quando parte il programma. Quindi posso essere in anticipo o in ritardo a seconda dell'orario in cui avvio.
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 16:46   #6
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Il secondo argomento che passi tu è 0, non 1
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 17:45   #7
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da JohnMarston Guarda i messaggi
Scusa eh, ma il codice sopra non fa già quello che hai detto?
Ho un intervallo, 1 minuto per l'esattezza. Ma questo intervallo è calcolato da quando parte il programma. Quindi posso essere in anticipo o in ritardo a seconda dell'orario in cui avvio.
Scusa ma non ho capito il tuo problema. Te vuoi ad esempio avviare la tua applicazione alle 11:00? Usa lo scheduler del sistema operativo per farlo.

Se poi hai il problema di non sapere quale sia l'orario giusto in cui far partire la tua applicazione rientriamo nel discorso di IPC.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 18:48   #8
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da Don[ITA] Guarda i messaggi
Il secondo argomento che passi tu è 0, non 1
certo perché al primo avvio mi aspetto che processi, poi passa il minuto e processa nuovamente.. Da quel momento in poi lavora ad ogni intervallo impostato...
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 18:53   #9
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Scusa ma non ho capito il tuo problema. Te vuoi ad esempio avviare la tua applicazione alle 11:00?
Facciamo che ad un X secondo preciso processa. Per esempio, tengo conto 30:
18:50:30 -> processa
18:51:30 -> processa
18:52:30 -> processa
18:53:30 -> processa
18:54:30 -> processa
...-> processa

L'intervallo è sempre 1 minuto..
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2015, 23:28   #10
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Ah quindi il problema era mantenere costante l'intervallo tra i vari eventi. In questo caso devi usare scheduleAtFixedRate al posto di scheduleWithFixedDelay.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2015, 09:18   #11
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Ah quindi il problema era mantenere costante l'intervallo tra i vari eventi. In questo caso devi usare scheduleAtFixedRate al posto di scheduleWithFixedDelay.
Quindi a tuo dire, con scheduleAtFixedRate, indipendentemente dall'orario in cui lancio il programma, il processo viene eseguito a preciso X secondo con intervallo di 1 minuto?

Se non ti scoccia, puoi postarmi un esempio, per farmi capire meglio?
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2015, 12:48   #12
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Codice:
public class Test {
    private static void doStuff() {
        try {
            Thread.sleep(new Random().nextInt(3000));
        } catch (InterruptedException ignored) {
        }
    }

    public static void main(String... args) {
        ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

        executor.scheduleAtFixedRate(() -> {
            System.out.println(LocalTime.now());
            doStuff();
        }, 0, 5, TimeUnit.SECONDS);
    }
}
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 08:46   #13
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Codice:
public class Test {
    private static void doStuff() {
        try {
            Thread.sleep(new Random().nextInt(3000));
        } catch (InterruptedException ignored) {
        }
    }

    public static void main(String... args) {
        ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

        executor.scheduleAtFixedRate(() -> {
            System.out.println(LocalTime.now());
            doStuff();
        }, 0, 5, TimeUnit.SECONDS);
    }
}
Quindi scheduleWithFixedDelay avvia il processo con il delay da quando termina il precedente, mentre scheduleAtFixedRate ogni X secondi tra un'esecuzione e l'altra non tenendo conto del tempo impiegato nel processare quello precedente.

Direi che ci siamo, ma se io volessi far partire il delay ad un preciso secondo? Questo è quello che sto in realtà, cercando di fare.

Tra l'altro ho notato una cosa strana, per niente familiare nel tuo codice...
Cosa sta ad indicare questo segno ->?? Mai visto!

Grazie!
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 09:53   #14
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da JohnMarston Guarda i messaggi
Direi che ci siamo, ma se io volessi far partire il delay ad un preciso secondo? Questo è quello che sto in realtà, cercando di fare.
Devi usare il secondo parametro come ti ho detto nel primo messaggio per ritardare la prima esecuzione del numero di secondi necessari.


Quote:
Originariamente inviato da JohnMarston Guarda i messaggi
Tra l'altro ho notato una cosa strana, per niente familiare nel tuo codice...
Cosa sta ad indicare questo segno ->?? Mai visto!
Lambda expression. È una roba che hanno introdotto in java 8.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 11:56   #15
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Devi usare il secondo parametro come ti ho detto nel primo messaggio per ritardare la prima esecuzione del numero di secondi necessari.
Ma scusa eh, ma io non devo attendere X secondi, ma far partire il processo a X secondo preciso e spaccato.

Stabilisco, per esempio, che a, XX:XX:30, esegue... Quindi mi aspetto che al secondo minuto sempre a 30 secondi processi. Intendo orario preciso.

Ho provato ad inserire il secondo parametro, ma il problema è che attende tanto quanto il secondo parametro è impostato, ma non tiene conto dell'orario che deve processare. Poi magari ho sbagliato io ma credo che manchi qualcosa.
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 12:54   #16
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da JohnMarston Guarda i messaggi
Ma scusa eh, ma io non devo attendere X secondi, ma far partire il processo a X secondo preciso e spaccato.
Se sono le XX:XX:12 e gli dici di aspettare 18 secondi prima di far partire il tutto poi parte alle XX:XX:30.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 15:50   #17
JohnMarston
Member
 
Iscritto dal: Jun 2013
Messaggi: 133
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Se sono le XX:XX:12 e gli dici di aspettare 18 secondi prima di far partire il tutto poi parte alle XX:XX:30.
Ok, ma perdona se insisto, io non so a che secondo il programma viene attivato. Quindi dovrei fare in modo che se mancano X secondi al secondo stabilito inizia a conteggiare l'intervallo di 1 minuto in modo tale che al minuto successivo al secondo spaccato processa. Questo è il mio problema, non è tanto l intervallo di tempo, ma far partire e sincronizzare il processo.
JohnMarston è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 16:54   #18
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Quote:
Originariamente inviato da JohnMarston Guarda i messaggi
Ok, ma perdona se insisto, io non so a che secondo il programma viene attivato. Quindi dovrei fare in modo che se mancano X secondi al secondo stabilito inizia a conteggiare l'intervallo di 1 minuto in modo tale che al minuto successivo al secondo spaccato processa. Questo è il mio problema, non è tanto l intervallo di tempo, ma far partire e sincronizzare il processo.
Per saperlo basta semplicemente allocare un oggetto di tipoDate utilizzando il costruttore base.

Cya!
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Bureau 1440 mostra un'immagine di un sat...
Revocati i premi a Clair Obscur: Expedit...
Robotaxi Tracker, un 19enne ha scoperto ...
Il razzo spaziale riutilizzabile cinese ...
Apple Watch SE 3 in offerta su Amazon: i...
Eldegarde: l'action RPG firmato dagli ex...
Bici elettrica da città in offerta: F.ll...
Va al minimo storico DJI Osmo Action 4, ...
ChatGPT Atlas è il browser peggio...
2 TV 4K QLED 43" e 55" a prezz...
Nintendo Switch 2: il bundle con Mario K...
Morto il papà di Call of Duty, Ap...
XPeng esagera: la nuova Mona M03 ha 12 o...
Le memorie costano troppo: addio alla ve...
9 auricolari in forte sconto su Amazon: ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:08.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v