Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-10-2011, 11: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, 14: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, 14: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 14:49.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 14: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, 17:08   #5
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12944
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 17:12.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2011, 20: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, 21: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, 21: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, 21: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, 21: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, 07: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, 12: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, 15: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, 15: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, 15: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, 16: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, 16: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, 17: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, 17: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, 17: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


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
La serie POCO X8 è pronta al debu...
Apple conferma che l'arrivo della 'nuova...
Le vendite di Square Enix sono in netto ...
iPhone 17e si mostra in un video 'first ...
Il nuovo Xiaomi Watch 5 è pronto ...
Steam Deck è out of stock in dive...
Le migliori offerte Amazon del weekend, ...
PC più potente, meno spesa: su Amazon ta...
Amazon Haul: come fare acquisti 'pazzi' ...
Threads permetterà agli utenti di...
Monitor gaming in offerta su Amazon: 180...
Samsung vuole riconquistare la leadershi...
L'app di YouTube per Apple Vision Pro &e...
Fastweb + Vodafone: clienti e ricavi in ...
Artemis II: nuovo test prima del Wet Dre...
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: 18:26.


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