Really? So if threads 0 thru 9 are running, and 0-8 finish, the remaining requests in the queue (is there even a queue?) won't make use of 0-8?
It's fine if they sit there waiting for 9 to finish, but in this case, even after 9 finishes, additional requests aren't being executed. If > 10 requests are sent to it, the server throws an exception, and only executes the first 10. Also, sometimes it isn't the 10th request that is the slowest, it's some other one (the 2nd or whatever). Sorry, I'm confused because your answer makes it sound like what I'm seeing shouldn't be happening. :/ Thanks, Diane ________________________________________ From: Ben Craig [[email protected]] Sent: Friday, April 05, 2013 3:55 PM To: [email protected] Subject: Re: Question about Multithreaded Thrift Servers The threaded server uses one thread per connection. It does not get a request, and have an available thread process the request. This means that if you send 20 requests, and the 10th request takes a long time to process, the last ten requests will be stalled. From: "Napolitano, Diane" <[email protected]> To: "[email protected]" <[email protected]>, Date: 04/05/2013 02:44 PM Subject: Question about Multithreaded Thrift Servers Hello, I have a Thrift server (just "NameOfServer" here) written in Java which is initialized with the following inside of an inner class called ServerThread: TThreadPoolServer.Args args = new TThreadPoolServer.Args(serverTransport); args.maxWorkerThreads(10); args.processor(processor); TServer server = new TThreadPoolServer(args); server.serve(); Then NameOfServer has two objects: public static NameOfServerHandler handler; public static NameOfServer.Processor processor; And then a ServerThread object is created in my server's main: handler = new NameOfServerHandler(); processor = new NameOfServer.Processor(handler); Runnable r = new ServerThread(processor, portNum); new Thread(r).start(); My question is: am I doing this right? Because when I send more than ten requests to the server, it throws an exception and dies, and all requests beyond the first 10 are stalled. Unless I'm misunderstanding threads, Java, and everything else, aren't these additional requests supposed to be queued and then served when one of the 10 threads becomes available? If you need more code/context than this, definitely let me know. Thanks, Diane
