Sie sind auf Seite 1von 235

Programacin Java

Contenidos

Tecnologa Java
Un lenguaje de programacin Un entorno de desarrollo
El JDK

Un entorno de aplicaciones
El JRE la JVM

Un entorno de implantacin
En local la JVM, en remoto el Navegador
3

Caractersticas de la plataforma
La JVM
Virtual Portable entre S.O.

El reciclaje de memoria El JRE JVM Tool Interface: interfaz de herramientas de JVM


4

Entorno de ejecucin de Java (JRE)

Verificacin de byte codes


Las clases son conformes con el formato de archivos de clases de la especificacin de JVM No se han producido intentos de infringir las reglas de acceso El cdigo no provoca desbordamiento ni falta de operandos en la pila Todos los tipos de parmetros de los cdigos operativos son correctos No se han realizado conversiones de datos irregulares tales como la conversin de enteros en referencias a objetos
6

JRE con compilacin JIT

Ejemplo

Compilacin y ejecucin

Contenidos

10

Requisitos funcionales: ejemplo ??


El software debe aplicarse a una sola compaa de transporte. La compaa cuenta con una flota de vehculos que transporta cajas. El peso de las cajas es el nico factor importante que debe tenerse en cuenta al cargar un vehculo. La empresa posee dos tipos de vehculos: camiones y barcazas de transporte fluvial. Las cajas se pesan utilizando el kilogramo como unidad de medida, pero los algoritmos para calcular la potencia de motor necesaria deber contabilizar la carga total del vehculo medida en newtons. Deber utilizar una interfaz grfica para hacer el seguimiento de las cajas que se van agregando a los vehculos. Tambin deber generar varios informes a partir de los registros de fletes.
11

Clases en Java (y en OO)


La clase como prototipo de objetos (factora)
Define atributos (datos) Define mtodos (comportamiento)

Conceptos clave:
Ocultacin de informacin Encapsulacin Herencia Polimorfismo

12

Declaraciones:
De clase

De atributo

De mtodo

13

Declaraciones: ejemplos

14

Ocultacin de informacin
Impedir manipulaciones descontroladas de los atributos

15

Ocultacin: private, protected


Acceso controlado a los atributos

16

Encapsulacin
Usando los mecanismos de ocultacin conseguimos encapsulacin
Ofrecer una vista pblica (interfaz) sin dar detalles de cmo es la implementacin
17

Constructores

Sin argumentos
Por defecto

Con argumentos
Anula la generacin por defecto de constructor sin argumentos A veces se necesitan los dos aunque el constructor sin argumento no haga nada
18

Organizacin de las clases en paquetes


Orden importante Slo una clase pblica, posible varias private class Nombre del archivo fuente igual al de la clase pblica

19

Paquetes: declaracin e importacin


Declaracin de paquete

Declaracin de importacin

20

Agrupacin en paquetes

Si el sistema software es grande se subdivide en paquetes Cuidado con las dependencias entre paquetes

21

Traslacin de paquete a directorios

22

Estructura tpica de un proyecto Java

23

Empaquetado de clases: jar

24

Contenidos

25

Comentarios

26

Comentarios JavaDoc

27

Tipos primitivos
Lgicos: boolean Textuales: char

Enteros: byte, short, int y long Reales en coma flotante: double y float
28

Tipo String

29

Enteros: byte, short, int y long

30

Reales en coma flotante: double y float

Los literales en coma flotante se consideran double a menos que se declaren expresamente como float
2.718F 2.718f
31

Declaraciones y asignaciones: ejemplo

32

Tipos referencia

Referencia a un objeto MyDate


33

Construccin e inicializacin
1. Se asigna e inicializa el espacio al nuevo objeto como 0 o vaco (null).
En programacin Java, esta fase es indivisible para garantizar que no habr objetos que contengan valores aleatorios.

2. Se realiza cualquier inicializacin explcita. 3. Se ejecuta un constructor, un mtodo especial.


Los argumentos de new se pasan al constructor (22, 7, 1964).

4. El valor resultante de new es una referencia al nuevo objeto en el espacio de memoria dinmica. 5. Esta referencia se guarda en la variable de referencia.

34

Construccin e inicializacin
1

35

Construccin e inicializacin
3

36

Construccin e inicializacin
5

37

Uso de this
Desambiguacin Autoreferencia

38

Asignacin de referencias

39

Convenios de codificacin en Java


Paquetes: los nombres de paquetes se escriben en
minsculas. package transporte.objetos Clases: sustantivos en maysculas y minsculas; la primera letra de cada palabra en mayscula class LibroContabilidad Interfaces: mismas normas que las clases
interface Contabilidad

Mtodos: verbos en maysculas y minsculas, inicial en


minscula. Limitar el uso de signos de subrayado.
cuadrarLibro()

Variables: en maysculas y minsculas, con la inicial en


minscula. Limitar el uso de subrayado y evitar uso de dlar ($)
clienteActual
40

Convenios de codificacin
Constantes: en maysculas, separando palabras
subrayado TOTAL_NOMINA CANTIDAD_MAXIMA Estructuras de control: if-else o for, escribirlas entre llaves ({ }), aunque sean sentencias sencillas.
if ( condicin ) { sentencia1; } else { sentencia2; }
41

Contenidos

42

mbito de variables

43

Inicializacin de las variables


Los atributos toman valores por defecto

Las variables de mtodos no


Hay que inicializarlas exprersamente
44

Operadores, precedencia

45

Operadores lgicos

Operan en cortocircuito

46

Operadores lgicos de bits

47

Operadores de desplazamiento a la derecha >> y >>>


>> aritmtico o con signo
Copia el bit de signo al desplazar
Solo se aplican a tipos enteros >>> solo se aplica a int y long

>>> lgico o sin signo


Inserta 0 al desplazar

<< a la izquierda
48

Ejemplos de operadores de desplazamiento


<<5 >>5

49

Concatenacin de cadenas:

50

Conversin de tipos

51

Promocin y conversin de expresiones

Todas las operaciones binarias dan como mnimo int, o el tipo ms largo de los operandos
Ok Error
52

Sentencias if, else

Correcto pero desaconsejado, no tiene llaves

53

Sentencia switch

54

Bucles for

55

Bucle while

56

Bucle do/while

57

Construcciones especiales de control de bucles

58

Contenidos

59

Declaracin e inicializacin de arrays


De tipos primitivos o referencia Declaracin Creacin e Inicializacin

60

Arrays son objetos


Ubicados en espacio de memoria heap Alcanzados desde una variable referencia (s)

61

Arrays de referencias

62

Inicializacin
Cada posicin de s \u0000 Cada posicin de Point null
equivale a

Con tipos no bsicos


63

Arrays multidimensionales
Arrays de arrays Arrays dentados (o no rectangulares) Array rentangular

64

Lmites de los arrays


Rango desde 0..(tamao 1) Atributo length tamao del vector Si se sale de limites lanza OutOfBoundsException

65

Uso del bucle for mejorado

Equivalentes

66

Copia de arrays
Utilidad de copia en clase System

67

Contenidos

68

Subclases

69

Subclases

70

Herencia sencilla

71

Control de acceso
Niveles de acceso

72

Sobrescritura de mtodos (redefinicin)


Modificacin del comportamiento de la clase original

redefine

73

Redefinicin
No se puede reducir la visibilidad

74

Llamada a mtodos redefinidos

75

Polimorfismo
Una variable referencia es polimrfica, puede apuntar a varios tipos de objetos Sin embargo no es posible

76

Mtodos virtuales
A qu mtodo getDetails() se llama?
Al de Gerente? Al de Empleado?

Se determina en runtime
Depende el objeto asociado y de la declaracin del mtodo En java por defecto todos los mtodo son virtuales En este caso se ejecutara el de Gerente
77

Argumentos polimrficos

78

Operador instanceof

Aceptable aunque redundante

Usando bien el polimorfismo es muy poco habitual hacer estos chequeos. A menudo indicacin de un mal diseo

79

Conversin de objetos

Upcast siempre permitidos Downcast se fuerza con ()


El compilador chequea si es posible En runtime se verifica realmente, si no casa salta ClassCastException
80

Sobrecarga de mtodos

Reglas:
Las listas de argumentos deben ser diferentes Los tipos de retorno pueden ser diferentes
Pero no es suficiente si es la nica diferencia

81

Mtodos con argumentos variables

array de tipo int[]

82

Sobrecarga de constructores

this en un constructor debe ser la primera lnea

83

Ms sobre constructores
Los constructores no se heredan Se puede llamar a los constructores de las clases padre

No hay Constructor sin parmetros en la clase padre


84

Clase Object
Equals
Distinto de ==
Equals equivalencia == misma referencia

Se debe sobreescribir hashCode() a la vez

toString
Devuelve representacin en String de los valores del objeto
85

Equals y hashCode

86

Clases envoltorio
Java no considera los tipos de datos primitivos como objetos

De String a int

87

Conversin automtica: autoboxing


Boxing, unboxing

Autoboxing, autounboxing

88

Contenidos

89

Palabra clave static


static declara miembros (atributos,
mtodos y clases anidadas) que estn asociados a una clase en vez de a una instancia de la clase.

90 Si no es private

Mtodos de clase static

Error de compilacin, atributo no esttico

91

Inicializadores estticos
Se ejecutan al cargar la clase

Propiedad del sistema

Ejecucin:

92

Palabra clave final


Aplica a clases, mtodos y variables
Clases: No es posible crear subclases Mtodos: No se puede redefinir
No son mtodos virtuales, permite optimizacin en tiempo de ejecucin

Variable: Se comporta como una constante

93

Variables finales vacas


Solo pueden asignarse una vez y
Si es atributo, en el constructor de la clase Si es variable de mtodo, en cualquier parte del mtodo pero solo una vez 94

Tipos enumerados

95

Tipos enumerados avanzados

Se permite aadir mtodos El constructor es privado


96

Clases abstractas
La clase base indica que operaciones deben soportar las subclases pero no tiene conocimiento para resolver las operaciones

97

Clases abstractas

98

Interfaces

99

Interfaces
Definen un contrato entre cdigo cliente y la clase que proporciona la implementacin
Una clase implementa un interfaz definiendo todos sus mtodos Muchas clases pueden implementar un interfaz sin que haya jerarqua entre ellas Una clase puede implementar varios interfaces herencia mltiple de interfaces Los nombres de interfaz son tipos de variables referencia Conversiones de tipos e instanceOf
100

Interfaces
Sin necesidad de indicarlo:
Todos los mtodos declarados en una interfaz son pblicos y abstract Todos los atributos son public, static y final constantes

101

Mltiples implementaciones

102

Mezcla

103

Mltiples interfaces

104

Usos de las interfaces


Declarar mtodos que sern implementados por una o varias clases Dar a conocer la interfaz de programacin de un objeto sin revelar el verdadero cuerpo de la clase (esto puede ser til al distribuir un paquete de clases a otros desarrolladores) Identificar las similitudes entre clases no relacionadas sin tener que establecer ninguna relacin entre ellas Simular la herencia mltiple declarando una clase que implemente varias interfaces
105

Contenidos

106

Excepciones y aserciones
Excepciones: mecanismo de gestin de errores
Muy comn en los lenguajes OO

Aserciones: forma de verificar ciertos supuestos sobre la lgica de un programa


Pueden suprimirse al ejecutar el cdigo (las excepciones no)
107

Tipos de Excepciones
Chequeadas
Indican situaciones de error que se espera que el programador gestione (escriba cdigo para ello)

No chequeadas
Indican errores en el cdigo o el entorno de imposible o difcil recuperacin no se obliga al programador a escribir cdigo para gestionarlas Errores: subtipo de no chequeadas, indican problemas en la JVM (OutOfMemoryError, etc)
108

Excepciones, ejemplo

109

Sentencia try-catch

110

Uso de mltiples clusulas catch

111

Mecanismo de apilamiento de llamadas


Si una sentencia enva una excepcin que no se gestiona en el mtodo que la rodea, la excepcin se enva al mtodo que ha efectuado la llamada Si tampoco la gestiona el mtodo de llamada, se vuelve a enviar al mtodo inmediatamente anterior, y as sucesivamente. Si, cuando la excepcin llega al mtodo main(), ste tampoco la gestiona, la excepcin interrumpe el programa de forma irregular.
112

Propagacin de la excepcin: ejemplo

Ejecucin

113

Propagacin: otro ejemplo

Ejecucin

114

Clusula finally
Garantiza que el cdigo de su bloque siempre se ejecuta, incluso si se lanza excepcin No detiene la propagacin de la excepcin

115

Categoras de excepciones

No Chequeadas Chequeadas
116

Categoras de excepciones
Error:
Indica problemas en la JVM, no son errores recuperables. La JVM debe parar.

RuntimeException:
Errores de consistencia del programa, generalmente por errores de programacin. El programa no se suele poder recuperar.

Exception:
Problemas en tiempo de ejecucin causados por efectos del entorno y suelen poder gestionarse
117

La regla de la gestin o la declaracin


Aplica a excepciones chequeadas Si un bloque de cdigo lanza una excepcin:
O la gestiona O declara que la lanza

118

Sobrescritura de mtodos y excepciones

Es hija de IOException

No compila, Exception no es hija de IOException


119

Creacin de excepciones personalizadas

120

Aserciones
Si la expresin booleana no es true se provoca AssertionError y el programa aborta Chequean consistencia interna del programa Implementar programacin por contrato:
Postcondiciones Invariantes Las precondiciones lanzan excepciones
121

Usos recomendados de las aserciones


Postcondiciones e invariantes de clase

Invariantes del flujo de control

122

Usos inapropiados de las aserciones


Verificacin de los parmetros de un mtodo public (precondiciones)
Se deben lanzar siempre Exception
IllegalArgumentException o NullPointerException

Las aserciones se deshabilitan cuando el programa est en produccin, este chequeo no se tiene que deshabilitar
123

Control de la evaluacin de las aserciones en runtime


Las aserciones son tiles durante el desarrollo y la fase de pruebas Una vez validado el programa, en explotacin se deshabilitan para mejorar rendimiento Por defecto la JVM NO chequea asertos

124

Contenidos

125

API Collections
Una coleccin es un objeto que administra un grupo de objetos Los objetos de la coleccin se llaman

elementos
Las colecciones suelen trabajar con numerosos tipos de objetos, pero todos ellos son de un mismo tipo (todos descienden de un mismo tipo de nivel superior)
126

API Collections
El API Collections contiene interfaces que asignan los objetos a uno de los siguientes grupos: Collection: un grupo de objetos que se denominan elementos
Set: una coleccin sin orden especfico,
que no admite duplicados. List: una coleccin ordenada que admite duplicados.
127

Jerarqua de Collections

128

Implementaciones de las interfaces

129

Ejemplo con Set

Salida

Los elementos no aparecen en el mismo orden en el que se agregaron.

130

Ejemplo con List

Salida

131

Interfaz Map
Tambin denominados arrays asociativos Un Map guarda asignaciones de claves a valores Map no admite claves duplicadas y una clave slo puede asignarse a un valor Map: tres mtodos para ver contenido como colecciones:
entrySet: devuelve una variable Set que contiene todos los pares formados por una clave y un valor. keySet: devuelve una variable Set con todas las claves del mapa. values: devuelve una variable Collection con todos 132 los valores contenidos en el mapa.

Jerarqua Map

133

Ejemplo con Map

134

Ordenacin de colecciones
En las List los elementos se guardan en el orden de insercin
Las List se pueden ordenar creando una nueva lista con los elementos insertados en el orden adecuado Collections.sort()

En SortedSet y SortedMap se guardan siguiendo:


El orden natural de los elementos O un orden especificado distinto del natural
135

Ordenacin de collections
Orden natural:
Las clase debe implementar el interfaz

Comparable

Otros criterios de ordenacin:


Se deben implementar clases Comparator

136

Uso de comparable

137

Uso de Comparator

138

Uso de Comparator

139

Colecciones con Genricos


Sin genricos

Con genricos

Con genricos y autoboxing


140

Ejemplo con Set genrico

141

Comparacin

142

API Collections ahora genrico

143

Iteradores
Permiten recorrer la coleccin hacia delante

El orden en el que se encuentran es determinista o no dependiendo del tipo de coleccin


Set no es determinista SortedSet si lo es, orden natural List tb lo es, orden de inserccin
144

Iteradores
Todas las colecciones producen iteradores List soporta un iterador especial con funcionalidad aadida
Recorrido inverso Insercin Modificacin
145

Bucle for mejorado

146

Contenidos

147

Argumentos de la lnea de comandos

148

Propiedades del sistema

Properties almacena pares clave=valor, ambos String Estas propiedades son las que conoce la JVM en el momento del arranque
149

Principios bsicos del flujo de E/S


Un flujo es una secuencia de datos procedentes de una fuente en direccin a un sumidero
Normalmente, un programa representa un extremo de ese flujo, mientras que el otro extremo lo constituye otro nodo (por ejemplo un archivo)

Las fuentes y sumideros tambin se denominan flujos de entrada y flujos de salida


Un flujo de entrada solo se lee Un flujo de salida solo se escribe

150

Flujos de bytes. Mtodos InputStream


Siempre se deben cerrar al terminar Hacerlo en un finally

Devuelven int que representan al byte ledo

151

Flujos de bytes. Mtodos OutputStream

152

Flujos de caracteres. Mtodos Reader

Devuelve int representando al carcter Unicode (32 bits) ledo

153

Flujos de caracteres. Mtodos Writer

154

Flujos de nodos
Son los extremos finales de cadenas de flujos de procesamiento
Fuentes o sumideros

155

Reader y Writer: Ejemplo

156

Flujos en bfer

Buffered[R/W] permite leer lneas enteras Aaden procesamiento a los char servidos por FileReader y FileWriter Son nodos intermedios de procesamiento

157

Concatenacin de flujos de E/S

158

Flujos de procesamiento
Van en la parte intermedia de las cadenas de procesamie nto
No son nodos extremos
Clases de utilidad para implementar procesamiento particular
159

Ejemplo de cadenas de procesamiento

160

Clases bsicas de flujos de bytes

161

Clases bsicas de flujos de bytes

162

Clases bsicas de flujos de caracteres

163

Clases bsicas de flujos de caracteres

164

Codificaciones de caracteres
UTF-8, UTF-16, ISO-8859-1, etc
Diferencia entre tabla de caracteres y representacin binaria de los caracteres Flujos de texto reconocen las codificaciones binarias

Es posible indicar a los Flujos de caracteres el uso de Codificadores


165

166

167

Serializacin
Convertir un objeto a una secuencia de bytes que puede:
Ser guardada en soporte persistente Ser transmitida por la red

Slo se serializan los atributos, no los mtodos La clase debe implementar el interfaz Serializable no tiene mtodos, solo marca
Todos los atributos deben ser serializables Si alguno no lo puede ser se debe marcar como transient

Se serializan grafos de objetos


Si un objeto referencia a otros (y estos a su vez) se serializan todos los referenciados (a no ser que sean transient)

168

Clases serializables

Determinadas clases por su naturaleza no son serializables: Streams, Threads, etc. El modificador de acceso no tiene efecto

169

Escritura y lectura de un flujo de objetos

170

Contenidos

171

E/S de consola
Java permite interaccin con la consola usando java.lang.System
System.out: es un PrintStream inicialmente conectado a la ventana de terminal que haya abierto la aplicacin Java System.in: es un InputStream inicialmente conectado al teclado del usuario System.err: es un PrintStream conectado tambin a la ventana de terminal
172

Escritura en salida estndar

173

Lectura de la entrada estndar

174

Salida en formato simple

175

Entrada en formato simple

176

Archivos y E/S de archivos


Clase File
Proporciona utilidades para manejar informacin de ficheros y directorios de forma independiente de la plataforma Pero no para leerlos ni escribirlos (para eso se usan flujos)
File miArchivo; miArchivo = new File("miarchivo.txt"); miArchivo = new File("MisDocs", "miarchivo.txt"); File miDir = new File("MisDocs"); miArchivo = new File(miDir, "miarchivo.txt");
177

Clase File

178

Lectura de archivo caracteres

179

Escritura de archivo caracteres

180

Contenidos

181

Java Foundation Classes (JFC)


JFC: conjunto de paquetes para creacin de
interfaces grficas (GUI)
Conjunto de componentes Swing (sustituyen a AWT) Grficos 2D:
dibujo avanzado, manipulaciones de color, formas y transformaciones (rotacin, corte, deformacin de objetos, etc.) y tratar texto

Estilo de interfaz adaptable (look-and-feel)


El mismo componente aparece con el aspecto del S.O. en el que se ejecuta Windows, Motif y Metal.

API de accesibilidad.
lectores y amplificadores de pantallas, transformacin de texto en voz, etc

Drag and Drop Internacionalizacin


182

Look and feel

183

Arquitectura de Swing
Se basa en el patrn MVC, pero con variantes

184

Arquitectura de modelodelegado
Variante de MVC usada por Swing La vista y el controlador se funden, solo queda separado el modelo
Es modelo suele ser una representacin desde el punto de vista del GUI de la implementacin real del modelo

185

Paquetes de Swing

ofrece funciones de adaptacin del estilo de interfaz

componentes de texto editables y no editables


Componentes Visuales Bsicos 186

Composicin de una interfaz grfica


Tres tipos de elementos:
Contenedores
Todos los componentes de una GUI se agregan a estos contenedores JFrame, JDialog, JWindow y JApplet

Componentes
Derivan de la clase JComponent: JComboBox, JAbstractButton, JTextComponent, etc

Administradores de diseo
BorderLayout, FlowLayout y GridLayout, etc
187

Elementos de la GUI

188

Contenedores Swing

189

Componentes Swing

Botones Componentes de texto Componentes de visualizacin de informacin no editable Mens Componentes de pantalla con formato Otros controles bsicos

190

Propiedades de los componentes Swing

191

Administradores de diseo
Determinan el tamao y la posicin de los componentes dentro de un contenedor Alternativas:
Fijar pociones absolutas en pixels
Problemas de portabilidad entre plataformas y disposiitvos de visualizacin

Permitir redimensionamiento automtico del interfaz


Realizado por el administrador de diseo

192

Misin de los administradores de diseo


Gestionar el redimensionamiento de objetos de la interfaz grfica por parte del usuario Permitir el uso de distintos tipos y tamaos de letra que hacen diferentes sistemas operativos o su personalizacin por parte del usuario Tratar los requisitos de disposicin del texto que tienen las diferentes configuraciones internacionales (de izquierda a derecha, de derecha a izquierda, vertical) Cada administrador de diseo organiza los componentes segn unas normas predeterminadas
193

Administradores de diseo

194

Adm. de diseo. Ejemplos

195

Construccin de la GUI
Con herramientas de generacin de cdigo de interfaces
Borland, EclipseVE, MyEclipse, Matisse ... (no se incluye en este curso)

De forma programtica
til en aprendizaje y experimentacin Programacin poco eficiente, el cdigo es muy tedioso y repetitivo
196

Aplicacin HelloWorldSwing

197

Contenidos

198

Qu es un evento
Cualquier accin del usuario en la interfaz produce un evento El evento captura informacin acerca de lo ocurrido, en qu componente, cuando

199

Manejo de los eventos


Los eventos que afectan a la aplicacin deben ser procesados Son procesados por un manejador de eventos (un mtodo) que debe estar asociado a la fuente de eventos Un evento es un objeto que porta la informacin de la ocurrencia
getActionCommand getModifiers getWhen paramString
200

Modelo de delegacin
Cada fuente de eventos, para cada evento, puede tener asignados varios manejadores de eventos
Tambin se les llama event listeners

201

Ejemplo de receptor de eventos


Se podran asociar varios listeners para el mismo evento

202

Categoras de eventos

Para cada categora de evento el receptor debe implementar una interfaz


La interfaz obliga a implementar uno o ms mtodos
203

Categoras de eventos, mtodos e interfaces

204

Eventos, mtodos e interfaces

ene-09

205

Eventos, mtodos e interfaces

206

Ejemplo complejo

207

Adaptadores de eventos
En vez de implementar directamente las interfaces de los listener
Lo que obliga a implementar todos los mtodos aunque no se est interesado

se pueden usar clases adaptadoras ya implementadas


Dan implementacin por defecto (vaca) a todos los mtodos
208

Adaptadores: ejemplo de uso

209

Control de eventos con clases internas


210

Control de eventos con clases annimas


211

Creacin de un men

212

Contenidos

213

Hilos y clase Thread


Hilo (o contexto de ejecucin):
Encapsulamiento de una CPU virtual con su propio cdigo y datos de programa

java.lang.Thread:
Clase de Java que permite controlar los hilos (representa una CPU)
CPU virtual

214

Hilos: CPU virtual, cdigo y datos


Varios hilos pueden compartir:
Cdigo pero no datos
Cuando ejecutan cdigo de distintas instancias de una clase

Datos pero no cdigo


Cuando comparten el acceso a un mismo objeto Requiere sincronizacin entre los hilos

La CPU virtual se encapsula como una instancia de la clase Thread


En el constructor se le pasa el contexto Un objeto: su cdigo y sus datos son el contexto
215

Creacin del hilo

Thread recibe una instancia de Runnable (public void run())

216

Planificacin de la ejecucin de hilos


Preemptive pero no Round-Robin
Se ejecutan hasta que deja de ser ejecutable o hasta que otro hilo de mayor prioridad se pone en estado ejecutable.

Deja de ser ejecutable cuando:


Thread.sleep() Bloquea en espera de recurso

Se agrupan en funcin de su prioridad


217

Estados de un hilo

218

Thread.sleep() permitir a otros hilos ejecutarse

Tiempo mnimo dormido (en milisegundos) a no ser que sea interrumpido su sueo

219

Fin de los hilos

Una vez terminado el hilo no se puede reanudar


220

Control bsico de los hilos


Estado del hilo isAlive() Ajuste de la Prioridad setPriority(int) Un int entre MIN_PRIORITY y MAX_PRIORITY Espera por otro hilo Thread.join() Permitir a otros ejecutarse Thread.sleep(int milis) Thread.yield()
221

Thread.join() ejemplo

222

Uso de synchronized
Permite controlar hilos que comparten datos

223

Problema con hilos compartiendo datos

224

Uso de la palabra clave synchronized


En java cada objeto tiene un indicador de bloqueo asociado Synchronized adquiere ese bloqueo o espera a que est libre
El bloqueo acta como un Se adquiere el bloqueo semforo Synchonized maneja el Otros mtodos no sinchronized s tienen acceso a esos datos, semforo
habra que sincronizarlos todos
225

Synchronized, conclusiones
El mecanismo de sincronizacin slo funciona si todo el acceso a los datos sensibles es sincronizado Los datos de bloques sincronizados deberan ser private Mtodos sincronized

226

Ms estados para el hilo

227

Interaccin de los hilos: wait y notify


El hilo que llama a wait() queda a la espera de que otro hilo llame a notify() sobre el mismo objeto
Para hacer wait() o notify() se debe poseer el bloqueo desde dentro de bloque synchronized Al hacer wait() se libera el bloqueo
Lo coger uno de los hilos que har notify()
228

Ejemplo de interaccin de hilos

229

Contenidos

230

Conexin en red: Sockets


Socket un modelo de programacin de red Socket = IP cliente + Puerto Cliente + IP servidor + Puerto servidor + protocolo

231

Esquema de conexin

232

Modelo de conexin en red de Java

233

Servidor TCP/IP mnimo

234

Cliente TCP/IP mnimo

235

Das könnte Ihnen auch gefallen