Wiki Markup |
---|
Many programs must address the problem of handling a series of incoming requests. One simple concurrency strategy is the thread-per-message design pattern, which uses a new thread for each request \[[Lea 20002000a|AA. References#Lea 00]\]. This pattern is generally preferred over sequential executions of time-consuming, I/O-bound, session-based, or isolated tasks. |
Wiki Markup |
---|
However, the pattern also introduces overheads not seen in sequential execution, including the time and resources required for thread creation and scheduling, for task processing, for resource allocation and deallocation, and for frequent context switching \[[Lea 20002000a|AA. References#Lea 00]\]. Furthermore, an attacker can cause a denial of service (DoS) by overwhelming the system with too many requests all at once, causing the system to become unresponsive rather than degrading gracefully. From a safety perspective, one component can exhaust all resources because of an intermittent error, consequently starving all other components. |
...
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="4f866f61fe5f8ff1-bdacc3f4-4f134a79-b5d6a2bf-326f043070ff9cfe9e6025fd"><ac:plain-text-body><![CDATA[ | [[API 2006 | AA. References#API 06]] | [Interface Executor | http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Executor.html] | ]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="1cb2829295cf1bc6-34e6998b-42c44693-9ede9684-5e0ad15a8f3e6bc45614ce2a"><ac:plain-text-body><![CDATA[ | [[Lea 20002000a | AA. References#Lea 00]] | 4.1.3, Thread-Per-Message; 4.1.4, Worker Threads | ]]></ac:plain-text-body></ac:structured-macro> | |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="579230d5eaefbfa3-41080467-4a034254-94e5afe5-588b59ffaa15fef06d01275e"><ac:plain-text-body><![CDATA[ | [[Tutorials 2008 | AA. References#Tutorials 08]] | [Thread Pools | http://java.sun.com/docs/books/tutorial/essential/concurrency/pools.html] | ]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="06eb1a4825afe69c-396bd8ca-478b48a1-9e9b9908-0536a7da707584b1a8015cd0"><ac:plain-text-body><![CDATA[ | [[Goetz 20062006a | AA. References#Goetz 06]] | Chapter 8, Applying Thread Pools | ]]></ac:plain-text-body></ac:structured-macro> |
...