duminică, 2 septembrie 2012

citire string de la cele 2 capete.c


package pack;

public class Fir1 extends Thread {
Text t;
public Fir1(Text t){
this.t=t;
}
public void run(){
int i;
for(i=0;i<t.tab.length;i++){
t.increment();
System.out.println("stg"+t.stg+" "+t.tab[t.stg]);

}
}
}
package pack;

public class Fir2 extends Thread {
Text t;
public Fir2(Text t){
this.t=t;
}
public void run(){
int i;
for(i=0;i<t.tab.length;i++){
t.decrement();
System.out.println("drt" +t.drt+" "+t.tab[t.drt]);
}
}
}
package pack;
import java.io.*;
public class Test {

/**
* @param args
*/
public static void main(String[] args) {
try{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String line;
System.out.println("Dati String-ul: ");
line=in.readLine();
Text t=new Text(line);
Fir1 f1=new Fir1(t);
Fir2 f2=new Fir2(t);
f1.start();
f2.start();
}catch(IOException e){
System.out.println("Exceptie IO");
}

}

}
package pack;

public class Text {
public char[] tab;
public String line;
public int drt=0;
public int stg=-1;
public int index1=0;
public int index2=0;
public Text(String line){
this.line=line;
tab=line.toCharArray();
drt=tab.length;
index2=tab.length;
}
public synchronized void increment(){
while(stg>=tab.length/2){
try{
wait();
}catch(InterruptedException e){
System.out.println("Thread Intrerupt");
}
}
stg++;
notifyAll();
}
public synchronized void decrement(){
while(drt<=tab.length/2){
try{
wait();
}catch(InterruptedException e){
System.out.println("Thread Intrerupt");
}
}
drt--;
notifyAll();
}
}

Niciun comentariu:

Trimiteți un comentariu