[go: up one dir, main page]

0% encontró este documento útil (0 votos)
68 vistas15 páginas

Java Avanzado Classes

El manual del alumno del curso de programación en Java ofrece una guía sobre las opciones avanzadas del lenguaje, incluyendo la conexión a bases de datos mediante JDBC y ODBC, así como la ejecución de instrucciones SQL. Se requiere un conocimiento previo de Java y SQL, y se proporcionan ejercicios prácticos para reforzar el aprendizaje. Además, se incluye información sobre reciclaje de memoria, clases útiles y soporte post-curso.

Cargado por

JContreras CT
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
68 vistas15 páginas

Java Avanzado Classes

El manual del alumno del curso de programación en Java ofrece una guía sobre las opciones avanzadas del lenguaje, incluyendo la conexión a bases de datos mediante JDBC y ODBC, así como la ejecución de instrucciones SQL. Se requiere un conocimiento previo de Java y SQL, y se proporcionan ejercicios prácticos para reforzar el aprendizaje. Además, se incluye información sobre reciclaje de memoria, clases útiles y soporte post-curso.

Cargado por

JContreras CT
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 15

Nivel avanzado

Manual del alumno

(Versin 6, JDK 1.6.0)

SolucionJava.com

Reproduccinprohibida

Versin2.0

CopyrightCdricSimon,2009

Ing.CedricSimonTel:22680974Cel:88882387Email: c e d r i c @ s o l u c i o n j a v a . c o m Web:www.solucionjava.com

Curso de programacin
en Java

CursodeprogramacinenJava

Pagina2/15

1 ndice
1 ndice..........................................................................................................................................................................................................2
2 Introduccin al curso.................................................................................................................................................................................3
2.1 Objetivo de este curso.......................................................................................................................................................................3
2.2 Manual del alumno............................................................................................................................................................................3
2.3 Ejercicios prcticos............................................................................................................................................................................3
2.4 Requisitos para atender a este curso...............................................................................................................................................3
2.5 Soporte despues del curso.................................................................................................................................................................3
3 Conexin a base de datos...........................................................................................................................................................................4
3.1 Objetivo del capitulo.........................................................................................................................................................................4
3.2 Driver ODBC.....................................................................................................................................................................................4
3.3 Driver JDBC......................................................................................................................................................................................4
3.4 Conexin.............................................................................................................................................................................................4
3.5 Ejecucin de instrucciones SQL.......................................................................................................................................................5
3.6 Paquete SolucionJava........................................................................................................................................................................6
4 Reciclaje de memoria.................................................................................................................................................................................7
5 Clases interesantes.....................................................................................................................................................................................8
5.1 Clase StringBuilder...........................................................................................................................................................................8
5.2 Clase ArrayList..................................................................................................................................................................................8
6 Streaming...................................................................................................................................................................................................9
7 Variables de sistema.................................................................................................................................................................................11
8 Compresin y empaquetado de aplicacin..............................................................................................................................................12
9 Threads.....................................................................................................................................................................................................13
10 Ejercicios................................................................................................................................................................................................14
11 Esquema de la base de datos..................................................................................................................................................................15

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina3/15

2 Introduccinalcurso
2.1 Objetivodeestecurso
EnestecursovamosaverunasopcionesavanzadasdellenguajeJava.Estabaselesvaaservirporcualquiertipode
aplicacinquedesearealizar:aplicacinindependiente,applet,paginawebenJava

2.2 Manualdelalumno
Estemanualdelalumnoesunaayudaparaelalumno,paratengaunrecuerdodelcurso.Estemanualcontieneun
resumendelasmateriasquesevanaestudiarduranteelcurso,peroelalumnodeberadetomarnotaspersonales
paracompletasestemanual.

2.3 Ejerciciosprcticos
Paracaptarmejorlateora,seharnmuchosejerciciosconlosalumnos,paraprobarlateorayverificarla
integracindelamateria.

Tambin,elalumnopodrcopiarsuscdigosenundisquetealfindelcursoparallevarse,confindeseguirlaprctica
ensuhogar.

2.4 Requisitosparaatenderaestecurso
SerequiereunconocimientodebasedellenguajeJava,ylaprogramacinorientadoaobjeto.tambinseneceistaun
conocimientodebasedellenguajeSQL.
Sielalumnotienedificultadesenunuotrocapitulo,eldebesentirselibredepedirexplicacionesadicionalesal
profesor.

2.5 Soportedespuesdelcurso
Sitienespreguntassobrelamateriadelcursoentusejerciciosprcticos,puedesescribirtuspreguntasa
cedric@solucionjava.com.
Parainformacionessobreotroscursos,visitaelsitiowebwww.solucionjava.com.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina4/15

3 Conexinabasededatos
Cuandosedesarrollaunaaplicacin,muchasvecessenecesitaconectaraunabasededatos.Javapermiteconectarse
alasmayorasdelasbasededatos,portantoqueexisteundriverODBComejor,JDBC.

3.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnosercapazdecrearunaconexinaunabasededatosyejecutarinstruccionesenla
basededatos.EstecapitulonoesunainiciacinalSQLnialmanejodebasededatos.

3.2 DriverODBC
UndriverODBC(OpenDatabaseConnectivity)permiteutilizarundrivergenricoparaconectarseaunebasede
datos.AsJavaseconectaaldriverODBC,yeldriverODBCseconectaalabasededatos.Eselmediomsfcilde
conectarseaunabasededatos,peroesmuchomenoseficientequeundriverJDBC.

3.3 DriverJDBC
UndriverODBC(JavaDatabaseConnector)esundriverdiseadoparaconectarseaunabasededatos.Estedriver
esespecficoaunabasededatos(yavecesaunaciertaversindeunabasededatos).
EldriverJDBCseconectadirectamentealabasededatos,ycomolestadiseadoparaestabasededatos,tiene
normalmentemuchasmsopciones,ymenosrestricciones,queelODBC.

3.4 Conexin
Bsicamente,hayprimeroquecargareldriverJDBC,luegohayqueconectarsealabasededatos,ysilograseso,
puedesejecutartusconsultasSQL.
Ejemplo:
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestDb {
public static void main(String[] args) {
java.sql.Connection con = null;
try {
try {
System.out.println("Buscando el driver JDBC...");
Class.forName(
"com.mysql.jdbc.Driver"
// "org.postgresql.Driver"
// "oracle.jdbc.driver.OracleDriver"
// "com.microsoft.sqlserver.jdbc.SQLServerDriver"
// "org.firebirdsql.jdbc.FBDriver"
).newInstance();
System.out.println("...Encontr el driver JDBC");
} catch (Exception e) {
System.out.println("No pudo encontrar el driver JDBC !!!!");
e.printStackTrace(System.out);
return;
}
try {
System.out.println("Connectando a la base de datos...");
con = DriverManager
.getConnection("jdbc:mysql://localhost/curso?user=curso&password=123"
// "jdbc:postgresql://localhost/curso:5432","postgres","123"
// "jdbc:oracle:thin:@192.168.0.10:1521/XE","curso","123"
// "jdbc:sqlserver://192.168.0.100:1433/database=curso/user=curso/password=123"
// "jdbc:firebirdsql:127.0.0.1:C:/firebird/data/curso.gdb","curso","123"
);
System.out.println("...Connectado a la base de datos");
} catch (Exception e) {
System.out
.println("No pudo conectarse a la base de datos !!!!");
e.printStackTrace(System.out);
return;
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina5/15

} finally {
System.out.println("Cerrando la conexion a la base de datos.");
try {
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("Fin");
}
}

3.5 EjecucindeinstruccionesSQL
ParapoderejecutarinstruccionesSQLenlabasededatos,hayqueserconectadoalaabasededatos.
Unavezconectado,hayquecrearlainstruccin,ejecutarla,yeventualmenterecogerelresultado.
Dependiendodesilainstruccindeberaderegresardatos,ono,sevautilizarunalistaderesultados(ResultSet)o
solamenteejecutarlainstruccin.
DeJavasepuedentambinllamaraprocedimientosyfuncionesdelabasededatos.
Paraevitarproblemasconjuegosdecarcterocaracteresespeciales,esmejorutilizarCallableStatementy
PreparedStatement.
Ejemplo:
import java.sql.*;
public class TestSql {
public static void main(String[] args) {
Connection con = null;
PreparedStatement ps = null;
Statement s = null;
ResultSet rs = null;
try {
try {
System.out.println("Buscando el driver JDBC...");
Class.forName("com.mysql.jdbc.Driver"
// "org.postgresql.Driver"
// "oracle.jdbc.driver.OracleDriver"
// "com.microsoft.sqlserver.jdbc.SQLServerDriver"
// "org.firebirdsql.jdbc.FBDriver"
).newInstance();
System.out.println("...Encontr el driver JDBC");
} catch (Exception e) {
System.out.println("No pudo encontrar el driver JDBC !!!!");
e.printStackTrace(System.out);
return;
}
try {
System.out.println("Connectando a la base de datos...");
con = DriverManager
.getConnection("jdbc:mysql://localhost/curso?user=curso&password=123"
// "jdbc:postgresql://localhost/curso:5432","postgres","123"
// "jdbc:oracle:thin:@192.168.0.10:1521/XE","curso","123"
// "jdbc:sqlserver://192.168.0.100:1433/database=curso/user=curso/password=123"
// "jdbc:firebirdsql:127.0.0.1:C:/firebird/data/curso.gdb","curso","123"
);
System.out.println("...Connectado a la base de datos");
} catch (Exception e) {
System.out
.println("No pudo conectarse a la base de datos !!!!");
e.printStackTrace(System.out);
return;
}
try {
System.out
.println("Lista de empleados con salario inferior a $30,000");
s = con.createStatement();
rs = s
.executeQuery("select concat(first_name,' ',last_name) as full_name from
employee where salary < 30000");
// "select first_name||' '||last_name as full_name from employee where salary < 30000");
while (rs.next()) {
System.out.println(rs.getString("full_name"));

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina6/15

}
} catch (java.sql.SQLException e) {
System.out.println("Unable to step thru results of query");
showSQLException(e);
return;
}
try {
System.out
.println("===============================================");
System.out
.println("Lista de empleados con salario entre $30,000 y $40,000");
ps = con
.prepareStatement("select concat(first_name,' ',last_name) as full_name from
employee where salary between ? and ?");
// "select first_name||' '||last_name as full_name from employee where salary between ?
and ?");
ps.setInt(1, 30000);
ps.setInt(2, 40000);
rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("full_name"));
}
} catch (java.sql.SQLException e) {
System.out.println("Unable to submit a static SQL query.");
showSQLException(e);
return;
}
} finally {
System.out.println("Cerrando la conexion a la base de datos.");
try {
if (rs != null) {
rs.close();
}
} catch (java.sql.SQLException e) {
showSQLException(e);
}
try {
if (ps != null) {
ps.close();
}
} catch (java.sql.SQLException e) {
showSQLException(e);
}
try {
if (con != null) {
con.close();
}
} catch (java.sql.SQLException e) {
showSQLException(e);
}
System.out.println("Fin");
}
}

private static void showSQLException(java.sql.SQLException e) {


java.sql.SQLException next = e;
while (next != null) {
System.out.println(next.getMessage());
System.out.println("Error Code: " + next.getErrorCode());
System.out.println("SQL State: " + next.getSQLState());
next = next.getNextException();
}
}

3.6 MarcodetrabajodeSolucionJava
ElmarcodetrabajodeSolucionJavatraeunaclasequefacilitalaconexinalabasededatos.
Parausarla,creaunaclasequeextiendecom.solucionjava.db.ConnectDBysobreescribeelmetodo
initConnectionVariables().
VerladocumentacionJavadelAPIparamasinformacin.
TodoslosarchivosrelacionadosalmarcodetrabajodeSolucionJava.comsepuedendescargardesde
http://solucionjava.sourceforge.net.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina7/15

4 Reciclajedememoria
Javatieneunmanejointernodelamemoria,yperidicamente,reciclalamemoriaquenoesmsutilizada,
destruyendolosobjetossinreferenciaenlamemoria.Esteaccinsellamagarbagecolleccin.
ComoJavapuedeconsumirbastantememoria,esimportantedenocrearobjetosquenosonnecesarios,ydeliberar
objetosquenosonmsnecesarios.
Unmtodo(System.gc();)permitetambindepreguntaraJavadeempezarelreciclajedelamemoria,peronoespor
esoqueelreciclajesertotalnisiempreinmediato.Llamaralarecoleccindebasuratienetambinuncostoanivel
deperformancias(probarconejemploaquabajo).
Paraqueunobjetoseacandidatoalreciclaje,elnodebeestarligadoanadautlizado.Paraestarseguroquesuobjeto
seracandidato,esmejormeterloanulo(null)demaneraexplicita.
Silarecoleccin'forzada'dememoriapuedeayudarencasosdeprogaramasusandomuchasmemorias,esamanera
soloretardaraunpocoelproblema,peronoloresolver.Hayqueinvestigarlafuentedelusodememoriaycorregirlo,
mejorqueutilizarlarecoleccinforzadadememoria.
Parainvestigarlafuentedelproblema,esposibledeconocerlamemoriadelJVMquequedadisponibleutilizandoel
metodofreememory()delobjetoRuntime.VerenladocumentacindeJavaparamasdetalles.

Ejemplo(probarconSystem.gc()ysin):
public class TestMemory {
public static void main(String[] args) {
String test="";
Runtime rt = Runtime.getRuntime();
for (int i=0;i<1000;i++) {
System.out.println("Memoria total: "+rt.totalMemory()+" - Memoria libre: "+rt.freeMemory());
test+="ffffffffffffffffffffffffffffffffffffff";
System.gc();
}
}
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina8/15

5 Clasesinteresantes
5.1 ClaseStringBuilder
LaclaseStringBuilderpermitedeahorarmemoriaencasodeunacadenadecaracteresquemuchocambiaenel
tiempo(concatenacion,reemplazo,...)
LaclaseStringcreaunnuevoobjetoacadamodificacindelobjeto,StringBuilderno.
StringBuildertienemenosmetodosqueString,perotienelasprincipales.VerladocumentacindeJavaparamas
informacin.

5.2 ClaseArrayList
LaclaseArrayList,delpaquetejava.utilpermiteconstruirarreglosdetamaodinamico,ydepoderordenarsus
valores.LosarreglosnormalesenJavatienenuntamaodefinidoalinicializarelarreglo,ynosepuedecambiarsin
crearotroobjeto.ArrayListpermitemanejarestosarreglosporloscualeseltamaoesdinamico.Hayquenotarque
unarreglonormalJavaesmuchomasrpidoderecorrerqueunArrayList,peroelArrayListtienesuusocuandono
seconoceeltamaomaximumalinicializarelarreglo.
VerladocumentacindeJavaparamasinformacin.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina9/15

6 Streaming
Elstreamingpermitedecrearunflujodedatos.Estopermiteleery/oarchivos(textos,sonidos,imgenes,....).Es
tambinposiblesacarelnombre,tamao,...deunarchivo.
Elstreamingesporejemplonecesarioparainsertaroleerobjetosmuygrandeenlabasededatos(BLOB,CLOB,...),
omostrarunaimagenenJSP.Conelflujosepuedenmanejarcualquiertipodearchivobinario.
Losstreamspuedenmanejarentradacomosalidadeflujos.
Ejemplo1:Listararchivos

import java.io.*;
public class TestArchivo
{
public static String leer()
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try
{
return br.readLine();
}
catch(Exception e)
{}
return "";
}
public static void main (String[] args)
{
System.out.println("Indique nombre de subdirectorio");
System.out.println("Trayectoria absoluta, por ej: C:\\java");
String nomdir = leer();
File arch = new File(nomdir);
if (arch.exists())
if (arch.isDirectory())
{
System.out.println("Contenido de "+nomdir);
String arr[] = arch.list();
for(int j = 0; j < arr.length; j++)
{
File otro = new File(nomdir + "\\"+arr[j]);
if (otro.isDirectory())
System.out.println(arr[j]+ " <DIR>");
else
System.out.println(arr[j]);
}
}
else
System.out.println(nomdir+" no es un directorio");
else
System.out.println("No existe");
}
}

Ejemplo2:LeerarchivoviaURL
import
import
import
import

java.io.BufferedReader;
java.io.InputStreamReader;
java.net.URL;
java.net.URLConnection;

public class LeerURL {


public LeerURL() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
if (args[0]==null)
System.out.println("Se espera un parametro al llamar al metodod main!");
URL miURL=null;
try {
miURL = new URL("http://192.168.0.10/"+args[0]);
URLConnection yc = miURL.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
yc.getInputStream()));
String inputLine;
System.out.println("<h1>Leyendo archivo</h1><hr>");
// Leer archivo
while ((inputLine = in.readLine()) != null)

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava
{

Pagina10/15
try {
System.out.println(inputLine);
int lineSize=inputLine.length();
System.out.println(lineSize);

}
catch (Exception e1) {
in.close();
in=null;
e1.printStackTrace();
System.out.println("Error leyendo el archivo. "+e1);
break;
}
} // while
//
System.System.out.println(inputLine);
in.close();
in=null;

}
catch(java.io.FileNotFoundException e1)
{
System.out.println("<hr><h1><font color=red>El archivo http://192.168.0.10/'"+args[0]);
}
catch (Exception e) {
System.out.println("Error: >"+e);
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina11/15

7 Variablesdesistema
EnJava,esposiblederecuperarciertasvariablesdesistema.Ciertasvariablesestanconstantesporunsistemo
operativodado,otrassepuedendefiniromodificaralencederlaJVMutilizandolaopcion-D<nombre>=<valor>.
Ejemlo:
import
import
import
public

java.awt.GraphicsDevice;
java.awt.GraphicsEnvironment;
javax.swing.UIManager;
class SystemProp {
public static void main(String[] args) {
try {
String msg = "Propriedades del sistema\n";
msg = msg + "Version de Java: " +System.getProperty("java.vm.version") + "\n";
msg = msg + "Vendor: " +
System.getProperty("java.vm.vendor") + " - Web:" +
System.getProperty("java.vendor.url") + "\n\n";
msg = msg + "Version de Windows: " +
System.getProperty("os.name") + " " +
System.getProperty("os.version") + " " +
System.getProperty("sun.os.patch.level") + "\n";
msg = msg + "OS architectura: " +System.getProperty("os.arch") + "\n\n";
GraphicsEnvironment env =
GraphicsEnvironment.getLocalGraphicsEnvironment();
msg = msg + "Resolucin de pantalla: " +
(int) env.getMaximumWindowBounds().getMaxX()+" x "+(int) env.getMaximumWindowBounds().getMaxY() + "\n";
GraphicsDevice device = env.getDefaultScreenDevice();
int bytes = device.getAvailableAcceleratedMemory();
int mbytes = bytes /1048576;
msg = msg + "Memoria grafica: " +
mbytes + " MB\n\n";
msg = msg + "Look & Feel disponibles:\n ";
UIManager.LookAndFeelInfo[] info = UIManager.
getInstalledLookAndFeels();
for (int i = 0; i < info.length; i++) {
// Get the name of the look and feel that is suitable for display to the user
String humanReadableName = info[i].getName();
String className = info[i].getClassName();
msg = msg + "
"+humanReadableName + " - " + className+"\n";
}
msg = msg + "\n";
msg = msg + "Archivo del programa: " +System.getProperty("user.dir") + "\n\n";
msg = msg + "CPU: " +System.getProperty("sun.cpu.isalist") + "\n\n";
msg = msg + "Usuario: " +System.getProperty("user.name") + "\n";
msg = msg + "Idioma: " +System.getProperty("user.language") + "\n";
msg = msg + "Encoding: " +System.getProperty("sun.jnu.encoding") + "\n\n";
msg = msg + "Tempdir: " +System.getProperty("java.io.tmpdir") + "\n";
msg = msg + "Java CLASS path: " +System.getProperty("java.class.path") + "\n\n";
msg = msg + "Java path: " +System.getProperty("sun.boot.class.path") + "\n\n";
msg = msg + "Java LIB path: " +System.getProperty("java.ext.dirs") + "\n\n";
msg = msg + "Windows path: " +
System.getProperty("java.library.path") + "\n\n";
System.out.println(msg);
} catch (Exception ex) {
System.out.println("Error in SystemProp() constructor" +
ex.getMessage());
}
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina12/15

8 Compresinyempaquetadodeaplicacin
Parareducireltamaodeunaaplicacinasicomojuntartodoslosarchivosjuntos,sepuedecrearunarchivoJarque
seraleidoydescromprimidoporJava.
ElusodeunmanifestpermiteindicaraJavacualeslaclasequehayqueutilizarparainiciarlaaplicacin,y
eventualmenteindicarcualesotrospaquetesJAR(drivers,...)hayqueincluirenelclasspath.
LoscdigosJavaestancasisiempredisptribuidosenarchivosJar(drivers,aplicaciones,...).ElarchivoJarpuede
contenerotrosarchivosquelosarchivosJava,comoimagenes,textos,sonidos,...
Existenprogarmas(comoporejemploJsmooth)queescondenunarchivoenunarchivoEXEparacorrerbajo
Windowscomounaaplicacinusualdewindows.
Parainiciarlaaplicacin,seutilizalaoption-jar deJava.Ejemplo:java

-jar miArchivo.jar

Ejemplodemanifest.txt:

Manifest-Version: 1.0
Main-Class: prueba.Main
Created-By: Cedric Simon www.SolutionJava.com
Class-Path: mysql-connector-java-5.1.5-bin.jar

Ejemplo:

jar -cmf manifest.txt prueba.jar prueba/*.* dbaccess/*.*


Este va a crear un archivo prueba.jar continiendo los archivos de la carpeta corriente mas los de las carpetas (paquetes) prueba
y dbaccess. El manifest.txt indica que la clase de arraque (que contiene el metodo main) es la clase Main del paquete prueba, y
hay que incluir el archivo mysql-connector-java-5.1.5-bin.jar (como mencionado aqu, se encuentra en la misma carpeta que
prueba.jar) en el classpath.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina13/15

9 Threads
Lasthreadssonhilosdeejecucin.Javapordefectotrabajaconsolounhilodeejecucin,perosepuedecrearvarios
hilosdeejecucinparaejecutarvariastareaselmismotiempo.
Losthreadsohilosdeejecucinpermitenorganizarlosrecursosdelordenadordeformaque
puedahabervariosprogramasactuandoenparalelo.Unhilodeejecucinpuederealizarcualquiertareaquepueda
realizarunprogramanormalycorriente.Bastarconindicarloquetienequehacerenelmtodorun(),queeselque
definelaactividadprincipaldelasthreads.
Losthreadspuedenserdaemononodaemon.Sondaemonaquelloshilosquerealizanen
background(enunsegundoplano)serviciosgenerales,estoes,tareasquenoformanpartedelaesenciadelprograma
yqueseestnejecutandomientrasnofinalicelaaplicacin.Unthreaddaemonpodraserporejemploaqulqueest
comprobandopermanentementesielusuariopulsaunbotn.UnprogramadeJavafinalizacuandosloquedan
corriendothreadsdetipodaemon.Pordefecto,ysinoseindicalocontrario,losthreadssondeltiponodaemon.
Javaproporcionamtodosparamanejarcadahilodeejecucin.Estosmtodospermitenentreotrosdeparar,
cancelar,reanudarhilosdeejecucin,ascomodefinirprioridadesentrehilos.Ejemplosdemtodos:wait(),sleep(),
notify(),suspend(),resume(),stop(),...
EjemplodeThread:

public class SimpleThread extends Thread {


// constructor
public SimpleThread (String str) {
super(str);
}
// redefinicin del mtodo run()
public void run() {
for(int i=0;i<10;i++)
System.out.println("Este es el thread : " + getName());
}
}
public class TestThread {
public static void main(String[] args) { // metodo principal
SimpleThread miThread = new SimpleThread("Hilo de prueba");
miThread.start();
} // fin de metodo Main
} // fin de clase TestThread
Ejemplo de Runnable:
public class SimpleRunnable implements Runnable {
// se crea un nombre
String nameThread;
// constructor
public SimpleRunnable(String str) {
nameThread = str;
}
// definicin del mtodo run()
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("Este es el thread: " + nameThread);
}
}

public class TestRunnable {


public static void main(String[] args) { // metodo principal
TestRunnable miTest = new TestRunnable();
SimpleRunnable p = new SimpleRunnable("Hilo de prueba");
// se crea un objeto de la clase Thread pasndolo el objeto Runnable como argumento
Thread miThread = new Thread(p);
// se arranca el objeto de la clase Thread
miThread.start();
} // fin de metodo Main
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina14/15

10Ejercicios
1)Conectarsealabasededatosysacarunalistadelosprimeros5empleados.
2)Crearunaclasequeextiendecom.solucionjava.db.ConnectDByutilizarladedesdeotraclase.
3)ProbarelejemplodeusodememoriaconysinSystem.gc().CompararelusodememoriautilizandoStringBuilder
envesdeString.
4)UtilizarlaclaseArrayListparacrearunaarreglodinamico,yordenarelarreglo.
5)LeerunarchivodeldiscodedesdeunaclaseJava
6)PasarunavariablealiniciarJavayleerladedesdeunaclase.
7)CrearunarchivoJarquecontineneunapequaaplicacinyejecutarlautilizandoelarchivoJar.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina15/15

11Esquemadelabasededatos

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

También podría gustarte