Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-10-2011, 10:31   #1
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
[Java] eseguire n azioni in un determinato arco temporale

Ciao ragazzi, mi è stato assegnato un lavoro ma non so come gestire una parte di questo. L'utente configurerà una percentuale, di una determinata azione da compiere, non è importante credo, per ogni fascia oraria, qualcosa del genere

8.00-9.00 : 7%
9.00-10.00: 8%
10.00-11.00: 7%

e via dicendo insomma. Sarebbe anche carino se per esempio quel 7% di azioni da compiere nella prima ora sia più o meno spalmato lungo tutti i 60 minuti e non tutte nel primo minuto per dire

Qualcuno ha mai avuto a che fare con cose schedulate nel tempo?
Se qualcuno ha qualche suggerimento da darmi e/o ha qualche framework utile al caso da consigliarmi gliene sarei molto grato. Grazie
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 13:30   #2
GByTe87
Senior Member
 
L'Avatar di GByTe87
 
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
Si tratta sempre della stessa operazione?

Quello che mi viene in mente così, al volo è una classe della famiglia Executors.
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO
GByTe87 è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 13:47   #3
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da GByTe87 Guarda i messaggi
Si tratta sempre della stessa operazione?

Quello che mi viene in mente così, al volo è una classe della famiglia Executors.
Sì, l'azione è sempre la stessa. Grazie, ci do un'occhiata

Edit: mmm, l'azione è sempre la stessa ma con parametri differenti diciamo.

Ultima modifica di ndakota : 18-10-2011 alle 13:49.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 13:50   #4
BrutalBass
Junior Member
 
Iscritto dal: Jul 2011
Messaggi: 14
Inserisci un timer e ad ogni millisecondo controlli l'ora del computer e dopo vai di condizioni if...

if(ora del computer == ora)
{
fai questo quello e quell'altro.
}
BrutalBass è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 16:08   #5
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12847
Quote:
Originariamente inviato da BrutalBass Guarda i messaggi
Inserisci un timer e ad ogni millisecondo controlli l'ora del computer e dopo vai di condizioni if...

if(ora del computer == ora)
{
fai questo quello e quell'altro.
}
Difficilmente hai bisogno di una risoluzione temporale così alta (1ms)... o meglio dipende dalle esigenze. Può andarti bene anche una precisione di mezzo secondo (500ms), in questo modo consumi meno cicli macchina e la precisione è comunque accettabile.

Ad ogni modo parliamo di percentuale di tempo o di azione, perché tra le due può esserci una differenza abissale.

Nel primo caso per spalmare basta calcolarsi una sleep opportuna .
Nel secondo caso invece devi quantificare quanto sia l'1% di qualcosa.

Ultima modifica di WarDuck : 18-10-2011 alle 16:12.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 19:16   #6
U-Boat
Member
 
Iscritto dal: Dec 2001
Città: Cernobbio -Co-
Messaggi: 47
Premetto che non ho capito cosa rappresenta la percentuale, quando io ho a che fare con problemi del genere ricorro alle classi Timer e TimerTask che servono proprio per eseguire "qualcosa" dopo un determinato periodo di tempo.

Se riesci ad essere un po' più chiaro, magari posso darti qualche idea in più
__________________
micheledellatorre.net
U-Boat è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 20:16   #7
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Dunque si tratta di inviare campagna di sms(insieme di sms con una data di invio comune). In particolare, gli utenti per ogni nuova campagna imposteranno delle percentuali. Per esempio.

8.00 - 9.00: 7%
9.00 -10.00: 8%
10.00-11.00: 8%
11.00-12.00: 7%

E via dicendo per un intera giornata. Il totale degli sms della campagna è risaputo quindi non c'è nessun problema a calcolare le percentuali. Il problema è come inviarne il 7% tra le 8 e le 9 ecc? E' più chiaro ora? Anche se non penso sia molto importante sapere che si tratta dell'invio di messaggi.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 20:48   #8
Dan__88
Senior Member
 
Iscritto dal: Aug 2011
Messaggi: 672
Immagino che conosci la quantità totale di sms per giornata no?
Quindi sai anche il numero effettivo di sms equivalente al 7%.
Allora dovresti anche poterti calcolare l'intervallo di tempo tra un sms e l'altro.

Così puoi utilizzare un ciclo, molto banalmente
Per esempio:
Codice:
while(inviati < totali)
{
invia sms(); sleep(tempoCalcolato);
}
Dan__88 è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 20:53   #9
Dan__88
Senior Member
 
Iscritto dal: Aug 2011
Messaggi: 672
anche se la cosa migliore sarebbe schedulare le azioni su Cron!
Ogni qual volta l'utente sceglie le percentuali e tutto il resto,
il programma dovrebbe effettuare i calcoli suddetti e modificare la tabella di Cron
Dan__88 è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 20:56   #10
U-Boat
Member
 
Iscritto dal: Dec 2001
Città: Cernobbio -Co-
Messaggi: 47
Adesso è decisamente più chiaro

Così a naso direi che col Timer te la puoi cavare tranquillamente.

Un'ipotesi è quella di usare un unico task di invio che scheduli come ricorrente ogni X minuti: sapendo che ore sono e quanti task all'ora vengono eseguiti, puoi sapere quanti e quali messaggi inviare.
Un'altra ipotesi è quella di schedulare tanti task nel momento in cui l'utente dà l'ok, passando al costruttore del task stesso i messaggi da inviare.

La parte su cui bisogna riflettere di più riguarda però quanto spesso e in che modo ti vengono modificate le impostazioni temporali e, soprattutto, l'elenco dei numeri di telefono a cui inviare i messaggi, per essere certo di non "perdere pezzi" per strada
__________________
micheledellatorre.net
U-Boat è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 06:02   #11
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Che io sappia la classe Timer è deprecata e l'uso è sconsigliato. Dovrebbe essere più facile usare uno ScheduledExecutorService e aggiungere un Runnable tramite scheduleAtFixedRate. Sapendo percentuale e numero di sms da inviare è banale calcolare ogni quanti ms deve chiamare la run().
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 11:33   #12
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Per adesso il problema è rientrato. Per pagare meno riciclano la vecchia soluzione, anche se non fa esattamente quello che vogliono. Probabilmente in futuro riupperò il thread
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 14:01   #13
Dan__88
Senior Member
 
Iscritto dal: Aug 2011
Messaggi: 672
Spilorci!
Qual'era la vecchia soluzione?
Dan__88 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 14:18   #14
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da Dan__88 Guarda i messaggi
Spilorci!
Qual'era la vecchia soluzione?
Si chiama schi... ehm stagista con cellulare
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 14:55   #15
GByTe87
Senior Member
 
L'Avatar di GByTe87
 
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Si chiama schi... ehm stagista con cellulare
Tutto ciò mi ricorda uno dei miei primi lavori: geocodifica degli indirizzi (circa 2000) presenti in un file excel; ovviamente all'epoca (16 anni) ero un totale ignorante (e il committente mi disse di fare così) quindi li cercavo un Google Maps (o un analogo) e riportavo le coordinate in excel.
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO
GByTe87 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 15:17   #16
U-Boat
Member
 
Iscritto dal: Dec 2001
Città: Cernobbio -Co-
Messaggi: 47
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Che io sappia la classe Timer è deprecata e l'uso è sconsigliato. Dovrebbe essere più facile usare uno ScheduledExecutorService [...]
Ho cercato un pochino e non ho trovato nessuna informazione sul fatto che Timer sia deprecato, l'unico riferimento nella javadoc riguarda ScheduledThreadPoolExecutor che dice
Quote:
A ThreadPoolExecutor that can additionally schedule commands to run after a given delay, or to execute periodically. This class is preferable to Timer when multiple worker threads are needed, or when the additional flexibility or capabilities of ThreadPoolExecutor (which this class extends) are required.
Da quello che mi pare di capire dice solo che è consigliabile usare l'executor in quei casi, ma che il timer continui a rimanere una classe "attuale".
__________________
micheledellatorre.net
U-Boat è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 15:41   #17
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da U-Boat Guarda i messaggi
Ho cercato un pochino e non ho trovato nessuna informazione sul fatto che Timer sia deprecato, l'unico riferimento nella javadoc riguarda ScheduledThreadPoolExecutor che dice

Da quello che mi pare di capire dice solo che è consigliabile usare l'executor in quei casi, ma che il timer continui a rimanere una classe "attuale".
java.util.Timer non è deprecata infatti, semplicemente nei javadoc di Timer, Java 7, è consigliato l'uso di ScheduledThreadPoolExecutor.
Quote:
Originariamente inviato da Timer javadoc in Java 7
...
This class does not offer real-time guarantees: it schedules tasks using the Object.wait(long) method.

Java 5.0 introduced the java.util.concurrent package and one of the concurrency utilities therein is the ScheduledThreadPoolExecutor which is a thread pool for repeatedly executing tasks at a given rate or delay. It is effectively a more versatile replacement for the Timer/TimerTask combination, as it allows multiple service threads, accepts various time units, and doesn't require subclassing TimerTask (just implement Runnable). Configuring ScheduledThreadPoolExecutor with one thread makes it equivalent to Timer.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 16:00   #18
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da U-Boat Guarda i messaggi
Ho cercato un pochino e non ho trovato nessuna informazione sul fatto che Timer sia deprecato, l'unico riferimento nella javadoc riguarda ScheduledThreadPoolExecutor che dice

Da quello che mi pare di capire dice solo che è consigliabile usare l'executor in quei casi, ma che il timer continui a rimanere una classe "attuale".
Me lo ricordavo diverso il messaggio sui docs.
Chiedo venia.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 16:55   #19
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Semplicemente la vecchia soluzione non fa la spartizione nelle varie ore. Quindi i clienti chiamano tutti insieme e il call center si intasa. E continuerà a intasarsi a quanto pare
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 16:57   #20
Dan__88
Senior Member
 
Iscritto dal: Aug 2011
Messaggi: 672
Non hanno mai sentito parlare di efficienza evidentemente
Dan__88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Le sonde spaziali ESA ExoMars e Mars Exp...
Roscosmos: static fire per i propulsori ...
Alcune partite NBA saranno trasmesse in ...
Intel Core 13000 e 14000 aumentano uffic...
Gemini sta per arrivare in Google Maps: ...
2 minuti per vedere le 27 offerte imperd...
Ray-Ban Meta Display: tecnologia sorpren...
Un mini PC a prezzo stracciato, non cerc...
Al via i coupon nascosti di ottobre: qua...
Ferrari Elettrica si aggiorna solo in of...
Doppio sconto sugli smartphone top Xiaom...
Samsung è sempre più prota...
ChatGPT ha pregiudizi politici? Ecco cos...
Un solo iPhone rubato ha portato alla sc...
Xiaomi 17 Ultra sta arrivando: ecco come...
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: 04:54.


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