Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud
Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud
Al Museo Alfa Romeo di Arese, Nutanix ha riunito clienti, partner ed esperti per .Next On Tour Italia e per mostrare come l’infrastruttura hybrid multicloud possa diventare il fondamento dell’innovazione, con una piattaforma capace di unificare applicazioni tradizionali, moderne architetture cloud-native e nuovi scenari basati sull’intelligenza artificiale
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti
Il Lenovo LOQ 15i Gen 10 (15IRX10) offre prestazioni convincenti grazie al Core i7-13650HX e alla RTX 5060 Laptop a 100W, mantenendo un prezzo competitivo tra 1100 e 1300 euro. Costruzione solida, buon display e ampia espandibilità lo rendono una scelta equilibrata per chi cerca un notebook gaming accessibile ma moderno.
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Abbiamo giocato a lungo a Battlefield 6, abbiamo provato tutte le modalità multiplayer, Redsec, e le numerose personalizzazioni. In sintesi, ci siamo concentrati su ogni aspetto del titolo per comprendere al meglio uno degli FPS più ambiziosi della storia dei videogiochi e, dopo quasi due mesi, abbiamo tirato le somme. In questo articolo, condividiamo con voi tutto ciò che è Battlefield 6, un gioco che, a nostro avviso, rappresenta esattamente ciò che questo genere attendeva da tempo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-05-2006, 09:52   #1
gaglioppo
Senior Member
 
L'Avatar di gaglioppo
 
Iscritto dal: Sep 2002
Città: Monza
Messaggi: 598
[java] uccidere un thread

ciao a tutti,

volevo sapere una cosa, visto che nn riesco a venire a capo di un problema con l'applicazione che sto realizzando.
Ho una classe che estende Thread che contiene il metodo run in cui il thread va a dormire.
Inoltre ho un bottone con associato un listener per far terminare il thread, ma cosi' com'è nn funziona. Come devo fare?

Codice:
public class Listato extends Thread {

Thread corrente;

public Listato(){
corrente=currentThread();
}
void run(){

....
....
wait(4000);
....
....
}

public void Funzione(){

.....
.....
                 JButton stoppa=new JButton();
		stoppa.addActionListener(new ActionListener() {
			public synchronized void actionPerformed(ActionEvent evt) {
				corrente.interrupt();
			}
		});
.....
....

}
grazie
__________________
Nunc est bibendum
gaglioppo è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 10:24   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da gaglioppo
ciao a tutti,

volevo sapere una cosa, visto che nn riesco a venire a capo di un problema con l'applicazione che sto realizzando.
Ho una classe che estende Thread che contiene il metodo run in cui il thread va a dormire.
Inoltre ho un bottone con associato un listener per far terminare il thread, ma cosi' com'è nn funziona. Come devo fare?
In che senso non funziona??? Dovrebbe funzionare. L'unica cosa a cui devi stare attento è che se interrompi il thread mentre è su una wait(), il thread riceve una eccezione InterruptedException che devi catturare ad esempio con:
Codice:
...
try {
    wait(4000);
} catch (InterruptedException e) {
   ...
}
...
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 10:39   #3
gaglioppo
Senior Member
 
L'Avatar di gaglioppo
 
Iscritto dal: Sep 2002
Città: Monza
Messaggi: 598
l'eccezione l'ho catturata, avevo tralasciato di scriverla,
fatto sta che il thread nn si ferma :-(

Non di dovrebbe arrestare l'esecuzione di run()?
invece continua come se nulla fosse...

non è che nel listener non riesce a funzionare interrupt()?
__________________
Nunc est bibendum
gaglioppo è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 10:43   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
L'unico modo per uccidere un Thread Java (in condizioni di normalità) è per esaurimento: quando non ha più nulla da fare ci lascia le penne.

interrupt() ha due effetti, che dipendono dallo stato del Thread che riceva l'invocazione.

Nel caso di Thread in attesa (vuoi, per un wait, uno sleep o un join) è generata un'eccezione InterruptedException.

Altrimenti muta solo il valore di uno stato.

La javadoc è naturalmente più esaustiva sull'argomento.

In entrambi i casi, il concreto esaurimento del Thread dipende dalla gestione esplicita della condizione terminante. Nel caso di suscettibilità al rilascio dell'eccezione InterruptedException è ciò che scrivi nel blocco di gestione (il catch) a stabilire se il Thread terminerà o meno. Nel caso di indifferenza alla stessa eccezione, occorre che, tra ciò che il Thread esegue come compito, vi sia il controllo periodico dello stato di interruzione.

Esempio: interrupt.

Codice:
private Thread runner; //esegue run
private boolean doTask = true;

public void start() {...}

public void stop() {
    if(runner != null) runner.interrupt();
}

public void run() {
    while(eseguiCompito()) {
        //fai qualcosa
        try {
            Thread.sleep(500);
        } catch(InterruptedException ex) {
            cancellaEsecuzione();
        }
    }
}

private synchronized void eseguiCompito() {
    return doTask;
}

private synchronized void cancellaEsecuzione() {
    doTask = false;
}
stop() invoca interrupt. Quando il Thread si troverà in pausa, verificherà lo stato "interrupted" e, nel caso in cui sia vero (cioè se qualcuno abbia chiesto al Thread di interrompere il suo compito) anzichè entrare in pausa sputerà un'eccezione InterruptedException. A quel punto la palla passerà al blocco catch, che semplicemente falsifica la condizione di ripetizione del ciclo while. Il Thread continuerà la sua esecuzione, il while cederà il passo e il compito del Thread si esaurirà.

In questo caso "interrupt" è superfluo: sarebbe stato sufficiente controllare direttamente la condizione del ciclo while. In altri casi (in particolare quando il Thread consumi dei dati per ricavare i quali è costretto ad una attesa) si usa accanto al controllo di una condizione non dissimile da quella proposta.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 11:02   #5
gaglioppo
Senior Member
 
L'Avatar di gaglioppo
 
Iscritto dal: Sep 2002
Città: Monza
Messaggi: 598
Grazie per i suggerimenti,
mi sa che l'interrupt nn fa al caso mio, uso notifyAll.
Non sono sicuro se nel syncronized ci vada corrente e se ci possono
essere problemi nel fare return su run().

Ho trovato questa soluzione, per ora:
Codice:
public class Listato extends Thread {

Thread corrente;

public Listato(){
corrente=currentThread();
}
void run(){

....
while(!interruzione || altrecose){
    wait(4000);
}
if(interruzione)
  return;
....
....
}

public void Funzione(){

.....
.....
                 JButton stoppa=new JButton();
stoppa.addActionListener(new ActionListener() {
public synchronized void actionPerformed(ActionEvent evt) {
synchronized(corrente){
   interruzione=true;
   corrente.notifyAll();
}
}
});
.....
....

}
__________________
Nunc est bibendum
gaglioppo è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 11:30   #6
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Be', il codice qualcosina di strano ce l'ha tuttavia parlo senza cognizione del tuo sistema di riferimento.

In linea generale, crei un'estensione di Thread quando usi un approccio actor-oriented alla concorrenza e usi Runnable quando ti affidi ad una politica task-oriented.

Nel tuo caso esprimi un mix.

Il tuo Thread "corrente" è anomalo ma questo non vuol dire che sia sbagliato: ripeto, dipende da quello che hai mente di fare.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 12:00   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da PGI-Bis
In linea generale, crei un'estensione di Thread quando usi un approccio actor-oriented alla concorrenza e usi Runnable quando ti affidi ad una politica task-oriented.
Mi spieghi meglio questo??

Il mio libro (quello per SCJP) spiega che estendere da Thread non è una buona pratica dal punto di vista della OOP. Questo perché "estendere" una classe significa "specializzarla", darle un comportamento più specifico. Nel caso di Thread, lo si dovrebbe estendere per creare una versione più specializzata di Thread. Ma quello che si fa in genere è semplicemente fargli eseguire un lavoro, non specializzarlo.
Quindi si dovrebbe ricorrere alla implementazione di Runnable, che tra l'altro permette così di estendere da un'altra classe (es. Applet).
Dico bene??
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 13:56   #8
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Sarò spudorato (e accetto ovviamente critiche in tal senso) ma quel libro ha un'idea almeno grossolana dell'orientamento agli oggetti.

Dire che il rapporto tra due definizioni di oggetti delle quali una è estensione dell'altra sia di genere a specie non è sempre corretto. Prendi il caso ideale di questi due personaggi:

Codice:
public class Ping {
    public void stampaTesto() {
        System.out.println("ping");
    }
}
Codice:
public class Pong extends Ping {
    public void stampaTesto() {
       System.out.println("pong");
    }
}
Pong è una specie di Ping? Se concordiamo, come mi sembra generalmente accettato, che nei termini dell'orientamento agli oggetti la definizione di un comportamento è sempre irrilevante (conta la dichiazione del possesso di una capacità, non come la capacità si svolta) allora diremmo che Pong è una specie di Ping sulla base di un elemento, la diversa definizione di stampaTesto, che abbiamo convenuto essere sempre trascurabile.

Negando la premessa, vale a dire assumendo che anche la definizione sia rilevante, salveremmo il rapporto di genere a specie tra Ping e Pong: Pong è specie di Ping perchè, pur dichiarando gli stessi comportamenti, ha una definizione specializzante e la definizione conta.

Il problema è che se la definizione conta, allora la definizione deve essere pubblicata: in quanto elemento specializzante, l'oggetto che la possiede deve renderla nota ai terzi che altrimenti questi non potrebbero distinguere tra lui ed il suo genere. Cosa quantomeno bizzarra perchè che per via del principio di identità due oggetti che non possiedano caratteristiche distinguenti sono lo stesso oggetto.

Salviamo capra e cavoli? Per me si può. Il primo passo è prescindere dal linguaggio. Io ritengo che la programmazione orientata agli oggetti non preesista ai linguaggi di programmazione orientati agli oggetti ma sono certo che preesistente è la prospettiva orientata agli oggetti.

La prospettiva orientata agli oggetti ci dice che il rapporto di genere a specie è solo una delle possibili relazioni tra almeno due oggetti in un ambiente.

Esiste almeno un caso esemplare in cui la definizione di un comportamento, nell'identità delle dichiarazioni, è elemento che distingue due oggetti, cioè partecipa all'identità di uno ma non dell'altro: è il caso del rapporto tra un prototipo ed il suo derivato. Prototipo e derivato non sono in rapporto di genere a specie: sono semmai esemplari diversi di uno stesso tipo concettuale.

Con un certo imbarazzo terminologico io definisco prototipo un oggetto pienamente formato e abile che è preso come punto di riferimento di un secondo oggetto, uguale al prototipo salvo per una diversa definizione di alcuni comportamenti.

Abbiamo due oggetti, abbiamo una relazione tra questi due oggetti, relazione qualitativamente diversa dal rapporto di genere a specie.

Con questo due di bastoni in mano, se torniamo al linguaggio Java, riusciamo a preservare il carattere distinguente della diversa definizione senza richiedere che la definizione sia pubblicata. Se ho due classi delle quali una è derivata dell'altro ed entrambe le classi possiedono le stesse dichiarazioni di capacità so che l'una differisce dall'altra come il prototipo differisce dal suo derivato. Prototipo e derivato e derivati diversi dello stesso prototipo, pur in costanza di dichiarazione (hanno tutti gli stessi metodi, in Javese) preservano la loro identità in forza della clausola di derivazione.

Giusto per non lasciare dei fili penzolanti, ricordo che il rapporto di genere a specie in Java si esprime attraverso la dichiarazione di due interfacce delle quali una sia estensione dell'altra (X ha tutte le capacità di Y più alcune specializzanti). Il rapporto che sussiste tra un interfaccia e una classe è di tipo a esemplare (X è una donna perchè possiede tutte le caratteristiche della categoria donna: magari ne possiede altre ma è indifferente al fine della verità "x è una donna").

Tornando a noi, un attore concorrente è un pezzo del sistema che esegue il proprio lavoro parallelamente agli altri attori. Un compito concorrente è un insieme di operazioni destinate ad essere affidate ad un Thread per l'esecuzione concorrente. Runnable è il prototipo dei compiti concorrenti e Thread è il prototipo degli attori concorrenti.

E qui tiro il fiato perchè se no mi viene un coccolone alle dita
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 13:59   #9
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
A scanso d'equivoci: all'esame scrivi quello che c'è sul libro (Gosling, Arnold, Holmes?) perchè è quello che conta per quell'esame.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 14:20   #10
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da PGI-Bis
Sarò spudorato (e accetto ovviamente critiche in tal senso) ma quel libro ha un'idea almeno grossolana dell'orientamento agli oggetti. [...]
Questo tuo post lo devo sicuramente rileggere bene un paio di volte per poterlo capire appieno!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 14:20   #11
dupa
Senior Member
 
L'Avatar di dupa
 
Iscritto dal: Jan 2002
Città: Napoli
Messaggi: 1727
Quote:
Originariamente inviato da andbin
Mi spieghi meglio questo??
Quindi si dovrebbe ricorrere alla implementazione di Runnable, che tra l'altro permette così di estendere da un'altra classe (es. Applet).
Dico bene??
quando estendi hai che la nuova classe è quella vecchia.

Un cerchio è una forma.
Un quadrato è una forma.

Quindi cerchio o quadrato, estendono forma.

Se estendi una applet allora la tua classe è una applet, come può a livello logico essere anche un Thread?
Al massimo la applet avrà dei thread.
No?
__________________
Se buttassimo in un cestino tutto ciò che in Italia non funziona cosa rimarrebbe? Il cestino.
dupa è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 14:25   #12
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da PGI-Bis
sul libro (Gosling, Arnold, Holmes?)
Il "The Java Programming Language, 4th Edition" di Gosling dovrebbe giusto arrivarmi a casa tra pochi giorni...
Un bel tomo di 928 pagine da leggere e studiare ...
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 14:30   #13
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
E' un bel libro ma quando a un certo punto, trattando dei generici, Ahè scrive "questo è troppo complicato da spiegare qui, rimandiamo alla bibliografia" ti fa un po' girare le nocciole .
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 14:32   #14
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da dupa
quando estendi hai che la nuova classe è quella vecchia.

Un cerchio è una forma.
Un quadrato è una forma.

Quindi cerchio o quadrato, estendono forma.
Sì, lo so!!! Un gatto è-un animale, una Ferrari è-una automobile.

Quote:
Originariamente inviato da dupa
Se estendi una applet allora la tua classe è una applet, come può a livello logico essere anche un Thread?
Al massimo la applet avrà dei thread.
No?
Appunto. E io cosa ho detto di sbagliato??? (ho solo riportato cosa spiegava il mio libro). Comunque è per quello che si implementa Runnable.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 14:36   #15
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da PGI-Bis
E' un bel libro ma quando a un certo punto, trattando dei generici, Ahè scrive "questo è troppo complicato da spiegare qui, rimandiamo alla bibliografia" ti fa un po' girare le nocciole .
Ma c'è tutto il capitolo 11 di 31 pagine dedicato ai Generic Types.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 14:40   #16
dupa
Senior Member
 
L'Avatar di dupa
 
Iscritto dal: Jan 2002
Città: Napoli
Messaggi: 1727
Quote:
Originariamente inviato da andbin
Bè anche se ferrari la vedo meglio come oggetto di c
Appunto. E io cosa ho detto di sbagliato??? (ho solo riportato cosa spiegava il mio libro). Comunque è per quello che si implementa Runnable.
Io sinceramente ho detto il contrario.
Personalmente io preferisco estendere Thread, cmq se qualcuno mi dà un esempio dove estendere thread non sarebbe corretto, sarei felice
__________________
Se buttassimo in un cestino tutto ciò che in Italia non funziona cosa rimarrebbe? Il cestino.
dupa è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 14:44   #17
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Si, siamo tutti d'accordo sul fatto che un gatto sia un animale, che la panda sia un'automobile e che la pera sia un frutto. Il problema è perchè il gatto è un animale, perchè la panda è un'automobile è perchè la pera è un frutto. E se esistano relazioni diverse, come possano essere espresse, che utilità abbiano. E come i diversi linguaggi di programmazione consentano di rappresentare questi oggetti e queste relazioni.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 14:45   #18
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da andbin
Ma c'è tutto il capitolo 11 di 31 pagine dedicato ai Generic Types.
Appunto, è per quello che girano! Tanto valeva non scriverlo e morta lì
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 15:20   #19
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da PGI-Bis
Si, siamo tutti d'accordo sul fatto che un gatto sia un animale, che la panda sia un'automobile e che la pera sia un frutto. Il problema è perchè il gatto è un animale, perchè la panda è un'automobile è perchè la pera è un frutto. E se esistano relazioni diverse, come possano essere espresse, che utilità abbiano. E come i diversi linguaggi di programmazione consentano di rappresentare questi oggetti e queste relazioni.
Guarda, ne sai sicuramente più tu di me su Java. Comunque il mio libro spiega bene 2 concetti: IS-A e HAS-A. L'ereditarietà e l'implementazione delle interfacce sono in pratica l'espressione del concetto IS-A. Il possedere e utilizzare all'interno di una classe A un riferimento alla classe B è l'esempio di HAS-A.

Quote:
Originariamente inviato da PGI-Bis
Appunto, è per quello che girano! Tanto valeva non scriverlo e morta lì
Comunque si trovano molte info in giro sui Generics. Sul mio libro x SCJP sono dedicate 35 pagine. In più c'è il tutorial in pdf.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2006, 15:34   #20
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Si, ma prova a chiederti non come si esprima la relazione IS-A o HAS-A in Java ma perchè A è un B o A possiede un B. Quel libro ti dirà che A è un B perchè A implements B o che A è un B perchè possiede le caratteristiche essenziali di un B. La prima è una petizione di principio, la seconda è aria fritta perchè poi dovrebbe dire quali caratteri siano essenziali e quali no e il problema dell'approccio classico è proprio l'assenza di un metro dell'essenzialità.

Non dare per scontato che io ne sappia più di te su Java: lo spirito santo è un po' che non infonde più e quello che so di Java l'ho letto sugli stessi libri che hai letto tu e che leggono tutti.

C'è un problema più generale di approfondimento di quello che leggiamo e che, a mio giudizio, aiuterebbe a cambiare l'attuale metodologia di sviluppo del software che, per chi ne se fosse accorto, è fatta così: io scrivo una stronzata, tu la leggi, lui la applica, il software non funziona e tutti ci stupiamo .
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud Nutanix: innovazione, semplicità e IA al ...
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il n...
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando Due mesi di Battlefield 6: dalla campagna al bat...
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
Una Xiaomi SU7 ha finito il suo parchegg...
Decine di associazioni contro i data cen...
Dongfeng batte Toyota e BYD: il suo moto...
Oltre NVIDIA: i server di Red Hat AI acc...
Grok diventa navigatore Tesla: Musk prom...
Broadcom/VMware e Siemens continuano a l...
NIO lancia il brand Firefly anche in Gre...
Trump annuncia una legge nazionale sull'...
Intel Arc B770: la scheda appare in un d...
Le Big dell'AI e Linux Foundation insiem...
I macchinari arrivano alla fabbrica BYD ...
Minori reclutati online per uccidere: l’...
Il Natale 'pesa' sull'ambiente: gli addo...
AMD presenta FSR 'Redstone': la nuova ge...
Tesla è la vettura usata meno aff...
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:05.


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