logotipo

img_google

public class ventana extends javax.swing.JFrame {
    
    
   
   
    public ventana() {
        initComponents();
    }
    
   
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
    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();
    }// </editor-fold>                        

    private void jButton4MouseClicked(java.awt.event.MouseEvent evt) {                                      
// TODO add your handling code here:
        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) {                                      
// TODO add your handling code here:
      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) {                                      
// TODO add your handling code here:
        
        hilo hilo1=new hilo("si");
        hilo hilo2=new hilo("no");
        hilo1.start();
        hilo2.start();
        
        
    }                                     

    private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {                                      
// TODO add your handling code here:
        escritor e=new escritor();  
        e.decir("si");
        e.decir("no");
        
    }                                     
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ventana().setVisible(true);
            }
            
        });
        
        
      
        
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    // End of variables declaration                   
    
}





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());
        } 
        
     
      
}
}