By Developers, For Developers
PDF Pg | Paper Pg | Type | Description | Fixed on | Comments |
---|---|---|---|---|---|
32 | TYPO | From the “Division of Labour” pdf excerpt, in the “Divide the Number of Threads” section, the last full paragraph on this page contains the sentence “If they spend less time begin blocked, that is they’re computation intensive, then you should have fewer threads, but no less than the number of cores.”. It should read “…spend less time BEING blocked…” | 2011-05-27 | ||
21 | TYPO | Deadlocd instead of deadlock. | 2011-05-27 | ||
22 | TYPO | “Something tlike this” | 2011-05-27 | ||
31 | TYPO | “the effort to determine if a number is primes” -> prime | 2011-05-27 | ||
247 | SUGGEST | In the onReceive method, it would be more idiomatic to use a case statement. case message; when FetchTotalSize … | 2011-05-27 | ||
104 | TYPO | First paragraph - “… It this succeeded…” should be “… If this succeeded…” | 2011-05-27 | ||
44 | TYPO | “a rather 1.5 times speedup” -> a rather meager speedup? subtle speedup? slight? | 2011-05-27 | ||
48 | TYPO | “once you fully eliminating”-> eliminate | 2011-05-27 | ||
48 | TYPO | “there’s no issue of visibility and crossing memory barrier” -> crossing THE memory barrier? | 2011-05-27 | ||
51 | TYPO | “You have to ensure that your code crosses the memory barrier at appropriate time,” -> at THE appropriate time | 2011-05-27 | ||
74 | ERROR | The ConcurrentTotalFileSizeWQueue blocks forever when scanning complicated directories, such as “c:/windows”. Setting the thread pool to a lower value, such as 10, makes it complete. My environment: Windows 7 SP1 64-bit on quad-core i7 920. | 2011-05-27 | ||
100 | TYPO | “His vision was primarily message passing and wanted to get rid of data” -> and HE wanted to get rid of data | 2011-05-27 | ||
39 | ERROR | Loving the book. I don’t think pool.invokeAll works as described here. When it returns, all the work is done. val futures = pool.invokeAll(callables) This logs all “true”s, even though each callable takes one second to process. CompletionService can be used with a pool to fetch work out as it finishes. daveb@davebsoft.com @dcbriccetti | 2011-05-27 | ||
181 | TYPO | In last paragraph of page, missing “is”: Oh wait, there one other detail, should be, I think: Oh wait, there is one other detail, | 2011-05-27 | ||
213 | TYPO | 2nd to last paragraph: Transactors also provides handles to run some code before a … should be “provide” instead of “provides” | 2011-05-27 | ||
251 | TYPO | Doing it right can help YOU safely reach your… instead of Doing it right can help safely reach your… | 2011-05-27 | ||
24 | TYPO | … that implicitly crosses thememory barrier… must be … that implicitly cross thememory barrier… | 2011-05-27 | ||
30 | TYPO | If they spend less time begin blocked … | 2011-05-27 | ||
9 | SUGGEST | “Moore’s Law…. ” The sentence is too long. Split it before the, “and to” | 2011-05-27 | ||
9 | SUGGEST | “how critical the travel time is [….], and so on” -> “how critical the travel time […], and so on, are” | 2011-05-27 | ||
10 | SUGGEST | “this book will not help you to learn”: doubled “help to learn” in the next sentence. | 2011-05-27 | ||
11 | SUGGEST | “What’s in this book? Starting with “The rest of this book” doesn’t match the headline. | 2011-05-27 | ||
12 | TYPO | “The word Java today stands more for the platform than for the language.” The sentence is difficult to understand | 2011-05-27 | ||
13 | TYPO | “extra effort to keep the syntax of these language to a minimal” -> languages | 2011-05-27 | ||
13 | SUGGEST | “Where there is a choice” -> Sentence too long and difficult | 2011-05-27 | ||
13 | TYPO | “The following is the version of languages” -> The following are the versions of the languages | 2011-05-27 | ||
14 | SUGGEST | “Go ahead and download the entire source code for this book from the website for this book” -> from its website | 2011-05-27 | ||
14 | TYPO | “However, any errors you find in this book is entirely a” -> are entirely | 2011-05-27 | ||
17 | SUGGEST | “flows of execution, a single” Use a : before “a single” | 2011-05-27 | ||
18 | TYPO | “I want to time an event and so decided” -> wanted (because of decided) | 2011-05-27 | ||
18 | SUGGEST | “stopwatch application, we can” -> colon before “we can” | 2011-05-27 | ||
18 | ERROR | Don’t ignore the InterruptedException without any note. | 2011-05-27 | ||
18 | SUGGEST | “event handler actionPerformed( ), but it” Why “but”? | 2011-05-27 | ||
19 | SUGGEST | Explain “main event thread”. Not everyone is familiar with UI programming. | 2011-05-27 | ||
20 | TYPO | “We need to present” -> needed | 2011-05-27 | ||
21 | SUGGEST | “timeout. You design your solution” Leave out the “you” | 2011-05-27 | ||
22 | SUGGEST | TimeUnit.SECONDS.sleep(2) could make the link to the mentioned “2 seconds” instead of sleep(2000) | 2011-05-27 | ||
24 | TYPO | “implicitly crosses the” -> cross | 2011-05-27 | ||
24 | SUGGEST | “synchronized and volatile force that the changes are globally | 2011-05-27 | ||
27 | ERROR | Use the order of keywords as mentioned in JLS 8.3.1 Field Modifiers > private static volatile and JLS 8.4.3 | 2011-05-27 | ||
27 | SUGGEST | The last sentence is not easy to understand. | 2011-05-27 | ||
38 | SUGGEST | I agree with Dave. The description does not match the behavior of the invokeAll method: \tSystem.out.println(“Invoking”); \tfor (Future The described behavior is achieved when using submit \tfor (Future | 2011-05-27 | ||
31 | TYPO | “more time blocked” -> more time beeing blocked | 2011-05-27 | ||
31 | SUGGEST | “You can try to guess it. Or you can also use profiling” -> You can try to guess it or you can use profiling | 2011-05-27 | ||
31 | TYPO | “TheRE would, however, …” | 2011-05-27 | ||
31 | TYPO | “One, this is hard, it would” -> First, … | 2011-05-27 | ||
32 | SUGGEST | First sentences should be made more clear on this page | 2011-05-27 | ||
32 | SUGGEST | Move the Footnote to the intro, because there’s also an unhandled exception some pages before this one. | 2011-05-27 | ||
33 | TYPO | “took for this operation” -> took for completing this operation | 2011-05-27 | ||
34 | TYPO | “to the wait she had” why “she”? | 2011-05-27 | ||
35 | TYPO | “There are now two challenges.” -> two challenges now | 2011-05-27 | ||
36 | SUGGEST | Hmm.. synchronized is not a bad keyword at all. As JCIP states it might be favoured for future optimizations because it’s build into the languages whereas a Lock is only a class. | 2011-05-27 | ||
100 | TYPO | " What’s worst, you get no" —> “What’s WORSE”? | 2011-05-27 | ||
48 | TYPO | … once you fully eliminating shared mutable state | 2011-05-27 | ||
51 | TYPO | … that’s shared between threads are immutable | 2011-05-27 | ||
46 | TYPO | “The finer we divide the problem, more likely” the more likely it is that there will be enough sliceS | 2011-05-27 | ||
50 | TYPO | “Your objects encapsulate | 2011-05-27 | ||
52 | TYPO | “Also this approach involves quite a bit of blocking of threads,” -> This approach also involves | 2011-05-27 | ||
54 | TYPO | “The data we have to dealing with” -> have to deal with | 2011-05-27 | ||
56 | TYPO | “You can’t get away | 2011-05-27 | ||
59 | TYPO | In the listing: isolated mutability (lower case instead of upper) | 2011-05-27 | ||
54 | SUGGEST | The short paragraph about the persistent data structures seems a bit out of place here. The information is too little (for me) to understand. Maybe refer to a more dedicated section of the book, or go in more depth here. | 2011-05-27 | ||
72 | SUGGEST | Why do you use the while-loop with compareAndSet instead of addAndGet? | 2011-05-27 | ||
82 | SUGGEST | Provide a reference to JCIP lock ordering in the sorting the Accounts explanation. | 2011-05-27 | ||
81 | SUGGEST | “There’s even a variation that allows you to interrupt a | 2011-05-27 | ||
81 | TYPO | “to ensure A proper unlock” or “to ensure proper unlockING” | 2011-05-27 | ||
89 | ERROR | The Timer class itself uses a dedicated Thread. Using an unshared timer won’t help.. Using a Timer might also introduce another concurrency issue if the replenish method get’s more complicated and throws an exception, this will cause the scheduling Thread to die and no other thread will take it’s place. This will render the schedule method a no-op. The Timer class also invokes the Thread start in it’s constructor… at least in the JDK implementation which I see here. | 2011-05-27 | ||
92 | ERROR | “Access to final variables don’t need to cross memory barriers, since they don’t change and cached values | 2011-05-27 | ||
92 | TYPO | “Let’s take a look at the modified code first before we discuss further.” -> discuss it | 2011-05-27 | ||
100 | TYPO | “We’ve been lead down the path of imperative” | 2011-05-27 | ||
101 | TYPO | “the current OO paradigm models it.” it?? | 2011-05-27 | ||
101 | TYPO | “Separate identity from it immutable state” from its | 2011-05-27 | ||
118 | TYPO | “Spend some time to play” A space is missing. | 2011-05-27 | ||
132 | SUGGEST | Use the STMUtils Java class instead of “akka.stm.StmUtil$class.retry” which looks very ugly in Java. | 2011-05-27 | ||
133 | TYPO | “StmUnit$class” 2 times, should be StmUtil$class | 2011-05-27 | ||
149 | TYPO | “I report here the output on my system for the /etc and /usr | 2011-05-27 | ||
148 | ERROR | Status Code 0 shouldn’t be used for abnormal termination in System.exit | 2011-05-27 | ||
26 | SUGGEST | Suggest “remember Mom always advised us…” instead of “remember mom always advised us…”. | 2011-05-27 | ||
26 | TYPO | “In fact, significant number of concurrent Java apps…”. Put “a” in front of “significant” to fix. | 2011-05-27 | ||
26 | TYPO | “Now suppose you have a final (immutable) field to an immutable instance…” should be “Now suppose you have a final (immutable) field referring to an immutable instance…” | 2011-05-27 | ||
152 | TYPO | “with access pattern appropriate for STM.” -> “an access pattern” or access patterns ? | 2011-05-27 | ||
175 | TYPO | “to support asynchrony and efficient messaging.” Isn’t it asynchronous? | 2011-05-27 | ||
180 | ERROR | “The delay introduced keeps the program alive while the actor responds to messages—the actors run in a non-daemon thread pool and will not keep your JVM alive if all daemon threads are gone. Take it for a ride to see the output.” In Java there are User-Threads and Deamon Threads, where a User-Thread must be stopped before the JVM may terminate, whereas Deamon Threads don’t keep the JVM running, but are killed if all User Threads were stopped and the JVM terminates. Therefore I think the description given here is wrong. Actor-Threads are deamon threads. | 2011-05-27 | ||
183 | TYPO | “works well with pattern matching” -> work well | 2011-05-27 | ||
186 | TYPO | “to see if response is available” -> if a response | 2011-05-27 | ||
186 | TYPO | “method as call to these methods” -> as calls to | 2011-05-27 | ||
186 | TYPO | “Exercise caustion when” -> Exercise caution | 2011-05-27 | ||
200 | TYPO | “as we translation” -> as we translate | 2011-05-27 | ||
209 | TYPO | “implementation for the isDefined()” -> in the code it’s called isDefinedAt() | 2011-05-27 | ||
211 | TYPO | “are simply translation” -> are simply translations OR are simply translated | 2011-05-27 | ||
214 | TYPO | “getting access to the transaction Coordinated object” -> to the transaction’s Cooordinated object | 2011-05-27 | ||
216 | TYPO | Set coordinations = new java.util.HashSet The Set is missing the generic type parameter SendTo | 2011-05-27 | ||
234 | TYPO | “and allow you to configure various parameters like fairness of thread affinity” -> and allows | 2011-05-27 | ||
236 | TYPO | “in response to the messages send.” -> sent | 2011-05-27 | ||
237 | TYPO | “accepts a closure that is be called” -> is to be called | 2011-05-27 | ||
248 | TYPO | “UntypedActorprovides a few flavors of” missing space before provides | 2011-05-27 | ||
248 | SUGGEST | “Let’s take this JRuby version of file size program for a ride across the Explain the time difference of the JRuby version compared to the other implementations. | 2011-05-27 | ||
184 | TYPO | “This method return a Future of an…” -> “This method returns a Future of an…” | 2011-05-27 | ||
197 | TYPO | In next-to-last paragraph on page, the 2 instances of “FileToProcesss” should be “FileProcessors”. | 2011-05-27 | ||
208 | TYPO | “The proxy used by the users of typed actors convert method calls to messages.” -> “The proxy used by the users of typed actors converts method calls to messages.” | 2011-05-27 | ||
230 | TYPO | This is two sentences separated by a comma: “We did not modify the actor itself, the new state we return will become…” | 2011-05-27 | ||
54 | TYPO | 5th paragraph/2nd line: to organize or compose these sequence of operations -> to organize or compose this sequence of operations | 2011-05-27 | ||
56 | SUGGEST | That’s exactly what Phil Bagwell -> Phil who? | 2011-05-27 | ||
56 | SUGGEST | 2nd paragraph: Removals from the head… -> May need to explain why this removal method doesn’t affected immutability. It isn’t clear if you haven’t seen/used these lists before. | 2011-05-27 | ||
57 | SUGGEST | Rich Hickey used a… -> Rich who? | 2011-05-27 | ||
58 | SUGGEST | Rather than having to copy all nine elements, we only had to copy three nodes -> May be you can identify which these 9 elements are. It isn’t clear as there are 10 people in the trie before Sam got added. | 2011-05-27 | ||
57 | TYPO | Bottom of the page: The structure of the tries after this selective copying -> should this be “of the trie”? It isn’t clear if the sentence refers to one or many. | 2011-05-27 | ||
139 | TYPO | As you work though… -> As you work through… | 2011-05-27 | ||
185 | TYPO | This sentence is easily misunderstood: | 2011-07-10 | ||
Cover | ERROR | No cover image shows up on a Nook e-reader, just a blank page. This is for the EPUB version. The cover shows just fine in the PDF. | |||
189 | SUGGEST | I suggest to not use new keyword to create case classes’ instances for messages in Scala examples | 2011-07-10 | ||
64 | TYPO | In the first paragraph, there’s the following sentence: “In general, we’ll don’t want to break down the problem too small as that may result in scheduling overhead.” It sounds like what was intended was either “we don’t want to break (…)” or "we’ll not want to break (…). The way it is written doesn’t make much sense. | |||
79 | ERROR | to ensure visibility stopEnergySource() has been made synchronized, but init() method (which initializes replenishTask field which is used by stopEnergySource()) is still un-synchronized. | |||
147 | SUGGEST | It would be very useful to describe also what should be in the classpath to use Akka, Multiverse or Clojure STM from within Java. | |||
147 | SUGGEST | It would be very useful to describe also what should be in the classpath to use Akka, Multiverse or Clojure STM from within Java. | |||
69 | TYPO | In the withdraw method, the acquisition of monitor.lock() should be just outside the try block, not inside. I.e., move it up one line. | |||
106 | ERROR | The following code does not work with akka.stm.Ref - I have tried all versions from 1.0 to 1.3.1. private void init() { The only to methods in Ref that return a boolean are I am not sure which one is used here. I would appreciate a response on this error. | |||
11 | TYPO | “is froth with problems” should be “is fraught with problems” | |||
146 | TYPO | At bottom, “still one of the most widely used language” (pluralize “languages”) | |||
97 | TYPO | Hi, my Clojure isn’t great, so perhaps just my misinterpretation, but the let form (line 4 in both the deposit and withdraw functions) dereferences balance and assigns the value to a local called current-balance. But the function doesn’t use the variable current-balance thereafter. Loving this book and many others you’ve published. Cheers, Tim | |||
18 | 19 | ERROR | The demo Example do not run ,Today ,when I run the Example in page 18 ,The class :YahooFinance.java .The exmaple can not run ,Why ? I am a student from China ,Is the network Problem? |