...
Code Block | ||
---|---|---|
| ||
class Helper { public void handle(String request) { //... } } class GetRequest { protected final Helper h = new Helper(); String request; public synchronized String accept() { String data = ""Read data from pipe""; // Read the request data, else block return data; } public void request() { while(true) { request = accept(); new Thread(new Runnable() { public void run() { h.handle(request); } }).start(); } } } |
...
Code Block | ||
---|---|---|
| ||
class GetRequest { protected final Helper h = new Helper(); String request; public synchronized String accept() { String data = ""Read data from pipe""; // Read the request data, else block return data; } public void request() { int NoOfThreads = 200; Executor exec = (Executor) Executors.newFixedThreadPool(NoOfThreads); while(true) { request = accept(); exec.execute(new Runnable() { public void run() { h.handle(request); } }); } } } |
...
Wiki Markup |
---|
\[[API 06|AA. Java References#API 06]\] [Interface Executor|http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Executor.html] \[[Lea 00|AA. Java References#Lea 00]\] Section 4.1.3 Thread-Per-Message and 4.1.4 Worker Threads \[[Tutorials 08|AA. Java References#Tutorials 08]\] [Thread Pools|http://java.sun.com/docs/books/tutorial/essential/concurrency/pools.html] \[[Goetz 06|AA. Java References#Goetz 06]\] Chapter 8, Applying Thread Pools \[[MITRE 09|AA. Java References#MITRE 09]\] [CWE ID 405|http://cwe.mitre.org/data/definitions/405.html] ""Asymmetric Resource Consumption (Amplification)"", [CWE ID 410|http://cwe.mitre.org/data/definitions/410.html] ""Insufficient Resource Pool"" |
...
CON01-J. Avoid using ThreadGroup APIs 11. Concurrency (CON) CON03-J. Do not assume that elements of an array declared volatile are volatile