public class ventana extends javax.swing.JFrame {
public ventana() {
initComponents();
}
private void initComponents() {
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText("si, no Con hilos");
jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jButton1MouseClicked(evt);
}
});
jButton2.setText("si, no sin hilos");
jButton2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jButton2MouseClicked(evt);
}
});
jButton3.setText("Problema de sincronia");
jButton3.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jButton3MouseClicked(evt);
}
});
jButton4.setText("Productor consumidor");
jButton4.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jButton4MouseClicked(evt);
}
});
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(27, 27, 27)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(jButton4)
.add(jButton3)
.add(jButton2)
.add(jButton1))
.addContainerGap(236, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(18, 18, 18)
.add(jButton2)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jButton1)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jButton3)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jButton4)
.addContainerGap(172, Short.MAX_VALUE))
);
pack();
}
private void jButton4MouseClicked(java.awt.event.MouseEvent evt) {
contador c=new contador();
hiloprod hilo1=new hiloprod(c);
hilocons hilo2=new hilocons(c);
hilo1.start();
hilo2.start();
}
private void jButton3MouseClicked(java.awt.event.MouseEvent evt) {
contador c=new contador();
hilosin hilo1=new hilosin(c);
hilosin hilo2=new hilosin(c);
hilo1.start();
hilo2.start();
}
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
hilo hilo1=new hilo("si");
hilo hilo2=new hilo("no");
hilo1.start();
hilo2.start();
}
private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {
escritor e=new escritor();
e.decir("si");
e.decir("no");
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ventana().setVisible(true);
}
});
}
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
}
class hilo extends Thread{
String g; contador c;
public hilo(String gg){
g=gg;
}
public void run(){
for(int i=0;i<10;i++){
System.out.println(g+" "+i);
}
System.out.println("Fin de "+g);
}
}
class contador{
int cont=0;
public void inc(){
int aux=cont;
int aux2=aux;
aux2++;
aux=aux2;
cont=aux;
}
public synchronized void meter(int i){
int aux=i;
int aux2=aux;
aux=aux2;
cont=aux;
}
public synchronized int sacar(){
return(cont);
}
public int getvalor(){
return(cont);
}
}
class hilosin extends Thread{
contador c;
public hilosin(contador cc){
c=cc;
}
public void run(){
for(int i=0;i<1000000;i++){
c.inc();
}
System.out.println("Contado= "+c.getvalor());
}
}
class hilocons extends Thread{
contador c;
public hilocons(contador cc){
c=cc;
}
public void run(){
for(int i=0;i<10;i++){
c.meter(i);
System.out.println("Metido "+i);
}
System.out.println("Meto el ultimo ");
}
}
class hiloprod extends Thread{
contador c;
public hiloprod(contador cc){
c=cc;
}
public void run(){
for(int i=0;i<10;i++){
System.out.println("sacado: "+c.sacar());
}
}
}