Dúvida FixedThreadPool

Boas!

estou a fazer um proxy e tenho que recorrer a uma poolthreads atraves da fixedthreadpool, no entanto nao estou a entender qual vai ser o número maximo de threads em paralelo?

obrigada

http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool(int)

O seu pool de threads irá ter no máximo nThreads threads. Se você por algum motivo precisar de mais threads, o processo que irá usar esse pool irá esperar até que uma thread esteja disponível.

será que me poderia explicar o funcionamento da fixedthreadpool nao estou mesmo a conseguir perceber

Vou dar um exemplo. Digamos que você tem uma lanchonete com 4 funcionários na cozinha. (Ou seja, 4 threads). Isso quer dizer que você pode preparar até 4 pedidos simultaneamente, sem precisar esperar alguém ficar livre. Se quiser ter um 5 pedido simultâneo, ele precisa esperar uma thread ficar livre.

obrigadassima, já percebi! agora a minha duvida consta como começar no java, como fazer fixedthreadpool com a framework executor!
é que eu sou principiante no java, e tenho um trabalho escolar para fazer uma proxy e requer o uso da fixedthreadpool e estou completamente perdida!

BOAS!
tenho este codigo


ackage proxy;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URL;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Level;
import java.util.logging.Logger;


public class Proxy {

    public static void main(String[] args){
        try {
            int nThreads=2;
      
            ServerSocket server= new ServerSocket(1234);
         
           Socket client=new Socket("localhost",1234);
         
             final ExecutorService pool=  Executors.newFixedThreadPool(nThreads); 
            while(true){
                try {
               
                   final httpreque a= new httpreque(client);
                   
                  
                    client=server.accept();
                    Runnable b= new Runnable() {
                   

                    @Override
                    public void run() 
                    {
                    }
                    };
                    a.run(); 
                      
                     
               
                } catch (IOException ex) {
                    client.close();
                    server.close();
                    Logger.getLogger(Proxy.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } catch (IOException ex) {
      }
    }
}

package proxy;

import java.io.*;
import java.net.*;
import java.util.StringTokenizer;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Level;
import java.util.logging.Logger;

public class httpreque implements Executor{
    Socket client;
    int nThreads;
    public httpreque(Socket client){
        this.client=client;
       
    }
    
      @Override
    public void execute(Runnable r) {
        Thread a=new Thread();
        a.start();
        
      }
   
    public void run(){
        try {
          
             BufferedReader input= new BufferedReader(new InputStreamReader(System.in));
          
             String headerline=input.readLine();
             System.out.println(headerline);
      
             StringTokenizer a= new StringTokenizer(headerline);
             String end,prot;
              URL url;
            if(a.nextToken()!="/"){
                end=a.nextToken();
               
                end=a.nextToken();
               
                prot=a.nextToken();
              
                url= new URL  (end);
                String l=url.getHost();
                 InetAddress address= InetAddress.getByName(url.getHost());
                 StringTokenizer add= new StringTokenizer(l);
                 
                String endhos= address.getHostAddress();
                System.out.println("Request for " +endhos);
                
                URLConnection con= url.openConnection();
                con.setDoInput(true);
                con.setDoOutput(false);
                con.connect();//     
                HttpURLConnection h = (HttpURLConnection) con;
                 BufferedReader br =new BufferedReader(new InputStreamReader(con.getInputStream()));  
                 StringBuffer newData = new StringBuffer(10000);  
                 String s = "";  
                 while ((s = br.readLine())!= null ) {  
                            newData.append(s);
                }
                br.close();  
                PrintStream out = new PrintStream(client.getOutputStream());
                String strStatus = h.getResponseMessage() + " (" +h.getResponseCode() + ")"; 
		System.out.println("HTTP Status: " + strStatus);
                System.out.println("HTTP Response Headers: ");
              for (int i = 1; ; i++) 
		{
                    String strKey = h.getHeaderFieldKey(i);
            	if (null == strKey)
                    {	
                        break;
				}
			System.out.println(i + ": " + strKey + ": " + h.getHeaderField(i));
                }
              h.disconnect();
            
            }
            if(input==null)
             input.close(); 
        } catch (IOException ex) {
            try {
                client.close();
                Logger.getLogger(httpreque.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex1) {
                Logger.getLogger(httpreque.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }
        
        
  
    }

  
}
        
      
 

e queria por a fixedthreadpool so que nao sei como fazer… alguem ajuda?