Academic Tutorials



English | French | Portugese | Dutch | Italian
Google

in linea

Domestico Codici sorgente E-Libri Trasferimenti dal sistema centrale verso i satelliti Metterseli in contatto con Circa noi

HTML Tutorials
HTML Tutorial
XHTML Tutorial
CSS Tutorial
TCP/IP Tutorial
CSS 1.0
CSS 2.0
HLML
XML Tutorials
XML Tutorial
XSL Tutorial
XSLT Tutorial
DTD Tutorial
Schema Tutorial
XForms Tutorial
XSL-FO Tutorial
XML DOM Tutorial
XLink Tutorial
XQuery Tutorial
XPath Tutorial
XPointer Tutorial
RDF Tutorial
SOAP Tutorial
WSDL Tutorial
RSS Tutorial
WAP Tutorial
Web Services Tutorial
Browser Scripting
JavaScript Tutorial
VBScript Tutorial
DHTML Tutorial
HTML DOM Tutorial
WMLScript Tutorial
E4X Tutorial
Server Scripting
ASP Tutorial
PERL Tutorial
SQL Tutorial
ADO Tutorial
CVS
Python
Apple Script
PL/SQL Tutorial
SQL Server
PHP
.NET (dotnet)
Microsoft.Net
ASP.Net
.Net Mobile
C# : C Sharp
ADO.NET
VB.NET
VC++
Multimedia
SVG Tutorial
Flash Tutorial
Media Tutorial
SMIL Tutorial
Photoshop Tutorial
Gimp Tutorial
Matlab
Gnuplot Programming
GIF Animation Tutorial
Scientific Visualization Tutorial
Graphics
Web Building
Web Browsers
Web Hosting
W3C Tutorial
Web Building
Web Quality
Web Semantic
Web Careers
Weblogic Tutorial
SEO
Web Site Hosting
Domain Name
Java Tutorials
Java Tutorial
JSP Tutorial
Servlets Tutorial
Struts Tutorial
EJB Tutorial
JMS Tutorial
JMX Tutorial
Eclipse
J2ME
JBOSS
Programming Langauges
C Tutorial
C++ Tutorial
Visual Basic Tutorial
Data Structures Using C
Cobol
Assembly Language
Mainframe
Forth Programming
Lisp Programming
Pascal
Delphi
Fortran
OOPs
Data Warehousing
CGI Programming
Emacs Tutorial
Gnome
ILU
Soft Skills
Communication Skills
Time Management
Project Management
Team Work
Leadership Skills
Corporate Communication
Negotiation Skills
Database Tutorials
Oracle
MySQL
Operating System
BSD
Symbian
Unix
Internet
IP-Masquerading
IPC
MIDI
Software Testing
Testing
Firewalls
SAP Module
ERP
ABAP
Business Warehousing
SAP Basis
Material Management
Sales & Distribution
Human Resource
Netweaver
Customer Relationship Management
Production and Planning
Networking Programming
Corba Tutorial
Networking Tutorial
Microsoft Office
Microsoft Word
Microsoft Outlook
Microsoft PowerPoint
Microsoft Publisher
Microsoft Excel
Microsoft Front Page
Microsoft InfoPath
Microsoft Access
Accounting
Financial Accounting
Managerial Accounting


Threads di controllo in Java

Previous Next





Definizione: Un Thread è niente ma un singolo flusso sequenziale di controllo nell'ambito del programma.




Che cosa è Thread?

I programmatori sono al corrente dei programmi sequenziali di scrittura. Il programma che visualizza “ciao il mondo! „, o programma che fascicola una lista dei nomi, o computa la lista dei numeri principali, sono sequenziale tutti i programmi: ciascuno ha inizio, estremità, sequenza ed a tutto il dato tempo durante il tempo di esecuzione del programma ci è unico dell'esecuzione.

Un Thread è simile ad un programma sequenziale, un singolo Thread inoltre ha inizio, l'estremità, sequenza ed a tutto il dato tempo durante il tempo di esecuzione del Thread ci sarà un unico dell'esecuzione. Ma il Thread in se non è un programma che non possa funzionare se ma dai funzionamenti nell'ambito del programma.




Esempio semplice del Thread

Il seguente esempio è un'applicazione semplice del Java che genererà ed inizierà due Threadsindipendenti.

class TwoThreadssTest
{
public static void main (String args[])
{
new SimpleThreads("Japan").start();
new SimpleThreads("India").start();
}
}

class SimpleThreads extends Threads
{
public SimpleThreads(String str)
{
super(str);
}
public void run()
{
for (int i = 0; i < 10; i++)
{
System.out.println(i + " " + getName());
try
{
sleep((int)(Math.random() * 1000));
} catch (InterruptedException e)
{}
}
System.out.println("DONE! " + getName());
}
}

Il primo metodo nel codice categoria di SimpleThreads è un costruttore che prende soltanto la stringa come relativa discussione. Questo costruttore è effettuato denominando i superclass costruttore ed è interessante perché regola il nome del Thread che è usato più successivamente nel programma.

Il metodo seguente in questo codice categoria è () metodo funzionato. il metodo di funzionamento () è il cuore di tutto il filetto, questo è dove l'azione del Thread avviene. Il metodo di funzionamento () nel codice categoria di SimpleThreads contiene la a per il ciclo che ripete dieci volte. In ciascuna della ripetizione visualizza il numero di ripetizione ed il nome del Thread ed allora dorme per l'intervallo casuale di tempo fra 0 e 1 secondo. Dopo la rifinitura del ciclo, il metodo di funzionamento () stampa “FATTO!„ con il nome del filetto.




Attributi di un Thread

Tutta l'azione avviene nel corpo del filetto, nel metodo di funzionamento del Thread (). Possiamo fornire il corpo al Thread in uno dei due sensi: in primo luogo subclassing un codice categoria del Thread ed escludendo il metodo di funzionamento () del filetto, secondariamente generando un Thread con l'oggetto praticabile come relativo obiettivo.




Corpo di un Thread

I Threadsdel Java sono effettuati usando il codice categoria del Thread che è la parte del pacchetto di java.lang. Un codice categoria del Thread effettua la definizione indipendente del sistema dei Threadsdel Java. Ma, l'esecuzione reale dell'operazione simultanea è fornita tramite l'esecuzione sistema-specifica. Per la maggior parte dei bisogni di programmazione, l'esecuzione di fondo non importa; possiamo ignorare l'esecuzione di fondo e programmare il Thread api e l'altra documentazione fornita del sistema del Java.




Dichiara di un Thread

Durante la vita, il Thread del Java sarà in uno fra vari dichiara. Il dichiarare di un Thread indica che cosa il Thread sta facendo attualmente e che cosa può fare a quel periodo della relativa vita: se esso sta funzionando? sta dormendo? o è guasto? Questi dichiarano sono illustrati sotto.




Nuovo filetto
La dichiarazione sotto genera un nuovo Thread ma non lo inizierà quindi a lasciare il Thread in un dichiarare identificato “nuovo filetto„.

Threads myThreads = new MyThreadsClass();

Quando il Thread è in “nuovo filetto„ dichiarare, soltanto esso è un oggetto vuoto del filetto. Nessuna risorsa del sistema è stanziata per esso ancora. Così quando il Thread è in questo dichiarare, noi può iniziare o arrestare soltanto il filetto; quando un Thread è in questo dichiarare la chiamata dei c'è ne dell'altro metodo oltre all'inizio () o arresto () non avrà alcun significato e non causa un IllegalThreadsStateException.

Praticabile
Il metodo di inizio () genera tutte le risorse di sistema necessarie per fare funzionare un filetto, programma il Thread per funzionare ed il metodo di funzionamento del Thread di chiamate ().

Threads myThreads = new MyThreadsClass();
myThreads.start();

A questo punto il Thread è “in praticabile„ dichiara. Ciò dichiara è chiamata “praticabile„ dichiara piuttosto che “funzionando„ dichiarare perché il Thread non può funzionare realmente quando è in questo dichiara. Molti calcolatori hanno un singolo processor renderli impossible fare funzionare tutti i Threads“praticabili„ allo stesso tempo. Di conseguenza il sistema runtime del Java dovrebbe effettuare lo schema di programmazione che ripartisce il processor fra tutti i Threads“praticabili„. Per la maggior parte degli scopi tuttavia, possiamo pensare “a praticabile„ dichiariamo come semplicemente “funzionando„. Quando un Thread sta funzionando, è “praticabile„ ed è il Thread corrente. Le istruzioni nel metodo di funzionamento () stanno eseguendo in sequenza.

Non praticabile
Un Thread prendpartee “a non praticabile„ dichiara quando uno di seguenti eventi accade:

  • Quando un metodo di sospensione () è denominato
  • Quando un metodo di sonno () è denominato
  • Quando il Thread usa il relativo metodo di attesa () per aspettare una variabile di circostanza
  • Quando il Thread sta ostruendo su ingresso/uscita.

Threads myThreads = new MyThreadsClass();
myThreads.start();
try
{
myThreads.sleep(10000);
} catch (InterruptedException e)
{
}

La linea GRASSETTO nel suddetto esempio mette il myThreads per dormire per 10 secondi. Durante questi 10 secondi, anche se il processor diventa disponibile il myThreads non funzionerà. Dopo 10 secondi finito, il myThreads diventa ancora “praticabile„ e se il processor è disponibile funzionerebbe.

Seguire le dichiarazione indica che l'uscita d'emergenza per ogni entrata “in non praticabile„ dichiara.

  • Se il Thread è messo per dormire, allora il tempo specificato dovrebbe trascorrere.
  • Se il Thread è sospeso, allora qualcuno deve denominare il metodo del resume ().
  • Se il Thread sta attendendo sulla variabile di circostanza, che cosa oggetto possiede la variabile dovrebbe cedere questa denominando informa () o metodo del notifyAll ().
  • Se il Thread è ostruito su ingresso/uscita, quindi l'ordine specificato dell'ingresso/uscita dovrebbe ottenere completo.

Guasto
Un Thread può morire in due sensi differenti: uno da una causa naturale, o essendo uccidendo (arrestato). Un Thread si dice per morire naturalmente quando il metodo di funzionamento () rimuove normalmente. Cosider per esempio, il ciclo di istante nel metodo di funzionamento è un ciclo limitato, ripeterà 100 volte ed allora smette di eseguire.

public void run()
{
int i = 0;
while (i < 100)
{
i++;
System.out.println("i = " + i);
}
}

Possiamo anche uccidere in qualunque momento semplicemente un Thread denominando il metodo di arresto (). Ciò è secondo le indicazioni del codice qui sotto:

public void run()
{
Threads myThreads = new MyThreadsClass();
myThreads.start();
try
{
Threads.currentThreads().sleep(10000);
} catch (InterruptedException e)
{
}
myThreads.stop();
}

Il metodo di funzionamento qui genera e myThreads di inizio allora mette il Thread corrente per dormire per circa 10 secondi. Quando il Thread corrente sveglia, la linea GRASSETTO nel segmento di codice ucciderà il myThreads.

Il metodo di arresto () getterà un oggetto di ThreadsDeath per uccidere il filetto. Quando il Thread è ucciso in questo modo muore asynchronously. Il Thread morirà quando realmente riceve un'eccezione di ThreadsDeath.

IllegalThreadsStateException
il sistema runtime getta un IllegalThreadsStateException quando denominiamo un metodo su un Thread ed il Thread dichiara non terrà conto quella chiamata di metodo. Per esempio, IllegalThreadsStateException è gettato quando denominiamo un metodo di sospensione () su un Thread che non è “praticabile„.

Secondo negli esempi dei Threadsstudiati finora in questo capitolo, quando denominiamo un metodo del Thread che può gettare un'eccezione, dovreste interferire e maneggiare l'eccezione, o dovreste dichiarare quello, l'eccezione di chiamata del uncaught dei tiri di metodo.

public void run()
{
Threads myThreads = new MyThreadsClass();
myThreads.start();
try
{
Threads.currentThreads().sleep(10000);
} catch (InterruptedException e)
{
}
myThreads.stop();
}

() metodo isAlive

Se il metodo che () i ritorni isAlive allineare allora filettano è iniziato e non è interrotto. Quindi, se () il metodo isAlive restituisce falso sappiamo che il Thread è uno “nuovo filetto„ o quello “guasto„. Se () il metodo isAlive restituisce allineare, allora il Thread siete “praticabili„ o “non praticabili„.




Priorità del Thred

Quando un Thread del Java è generato, eredita la priorità dal Thread che la ha generata. Possiamo anche modificare in qualunque momento la priorità del Thread dopo la relativa creazione usando il setPriority di metodo (). Le priorità dei Threadssvariano da MIN_PRIORITY a MAX_PRIORITY (questi sono i costanti definiti in Thread del codice categoria). A tutto l'dato istante di tempo, quando i Threadssmultipli sono aspettare per eseguire, il sistema runtime sceglie il Thread “praticabile„ che ha la netta priorità per l'esecuzione. Soltanto quando questo Thread si arresta, rende, o diventa “non praticabile„ per una certa specie di motivo, l'esecuzione più di scarsa priorità di inizio del filetto. Se ci sono due Threadsche hanno stesso CPU attendente di priorità, il programmatore li sceglierà ad un modo del rotondo-pettirosso.




Threads del Daemon

Tutto il Thread del Java può essere Thread del daemon. I Threadsdel Daemon sono fornitori di servizio per quei Threadso oggetti che funzionano nello stesso processo come il Thread del daemon sta facendo funzionare. Per esempio, il browser di HotJava ha un Thread del daemon, denominato lettore di immagine di priorità bassa, che legge le immagini dal sistema di lima o la rete per c'è ne dell'oggetto o del Thread che ha bisogno di un'immagine.





Previous Next

Keywords: multiple Threadss, java Threadss lock, scott oaks, henry wong


HTML Quizes
HTML Quiz
XHTML Quiz
CSS Quiz
TCP/IP Quiz
CSS 1.0 Quiz
CSS 2.0 Quiz
HLML Quiz
XML Quizes
XML Quiz
XSL Quiz
XSLT Quiz
DTD Quiz
Schema Quiz
XForms Quiz
XSL-FO Quiz
XML DOM Quiz
XLink Quiz
XQuery Quiz
XPath Quiz
XPointer Quiz
RDF Quiz
SOAP Quiz
WSDL Quiz
RSS Quiz
WAP Quiz
Web Services Quiz
Browser Scripting Quizes
JavaScript Quiz
VBScript Quiz
DHTML Quiz
HTML DOM Quiz
WMLScript Quiz
E4X Quiz
Server Scripting Quizes
ASP Quiz
PERL Quiz
SQL Quiz
ADO Quiz
CVS Quiz
Python Quiz
Apple Script Quiz
PL/SQL Quiz
SQL Server Quiz
PHP Quiz
.NET (dotnet) Quizes
Microsoft.Net Quiz
ASP.Net Quiz
.Net Mobile Quiz
C# : C Sharp Quiz
ADO.NET Quiz
VB.NET Quiz
VC++ Quiz
Multimedia Quizes
SVG Quiz
Flash Quiz
Media Quiz
SMIL Quiz
Photoshop Quiz
Gimp Quiz
Matlab Quiz
Gnuplot Programming Quiz
GIF Animation Quiz
Scientific Visualization Quiz
Graphics Quiz
Web Building  Quizes
Web Browsers Quiz
Web Hosting Quiz
W3C Quiz
Web Building Quiz
Web Quality Quiz
Web Semantic Quiz
Web Careers Quiz
Weblogic Quiz
SEO Quiz
Web Site Hosting Quiz
Domain Name Quiz
Java Quizes
Java Quiz
JSP Quiz
Servlets Quiz
Struts Quiz
EJB Quiz
JMS Quiz
JMX Quiz
Eclipse Quiz
J2ME Quiz
JBOSS Quiz
Programming Langauges Quizes
C Quiz
C++ Quiz
Visual Basic Quiz
Data Structures Using C Quiz
Cobol Quiz
Assembly Language Quiz
Mainframe Quiz
Forth Programming Quiz
Lisp Programming Quiz
Pascal Quiz
Delphi Quiz
Fortran Quiz
OOPs Quiz
Data Warehousing Quiz
CGI Programming Quiz
Emacs Quiz
Gnome Quiz
ILU Quiz
Soft Skills Quizes
Communication Skills Quiz
Time Management Quiz
Project Management Quiz
Team Work Quiz
Leadership Skills Quiz
Corporate Communication Quiz
Negotiation Skills Quiz
Database Quizes
Oracle Quiz
MySQL Quiz
Operating System Quizes
BSD Quiz
Symbian Quiz
Unix Quiz
Internet Quiz
IP-Masquerading Quiz
IPC Quiz
MIDI Quiz
Software Testing Quizes
Testing Quiz
Firewalls Quiz
SAP Module Quizes
ERP Quiz
ABAP Quiz
Business Warehousing Quiz
SAP Basis Quiz
Material Management Quiz
Sales & Distribution Quiz
Human Resource Quiz
Netweaver Quiz
Customer Relationship Management Quiz
Production and Planning Quiz
Networking Programming Quizes
Corba Quiz
Networking Quiz
Microsoft Office Quizes
Microsoft Word Quiz
Microsoft Outlook Quiz
Microsoft PowerPoint Quiz
Microsoft Publisher Quiz
Microsoft Excel Quiz
Microsoft Front Page Quiz
Microsoft InfoPath Quiz
Microsoft Access Quiz
Accounting Quizes
Financial Accounting Quiz
Managerial Accounting Quiz

Privacy Policy
Copyright © 2003-2024 Vyom Technosoft Pvt. Ltd., All Rights Reserved.