Talk:Java concurrency package: Difference between revisions
imported>Pat Palmer (grouse about directly attributed quotes used for definitions) |
imported>Pat Palmer |
||
(14 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
==overall comments== | ==overall comments== | ||
This is a great beginning. The article as it stands today | This is a great beginning. The article as it stands today is already useful. Some suggested enhancements which might still be done are detailed in the following subsections:[[User:Pat Palmer|Pat Palmer]] 01:43, 17 August 2010 (UTC) | ||
===what features are in Java 5.0 vs. Java 6.0=== | ===what features are in Java 5.0 vs. Java 6.0=== | ||
My understanding is that Java 6.0 introduced some new data synchronization constructs into the language. This article would benefit from stating clearly what came with Java 5.0, and then what was added in Java 6.0.[[User:Pat Palmer|Pat Palmer]] 01:43, 17 August 2010 (UTC) | My understanding is that Java 6.0 introduced some new data synchronization constructs into the language. This article would benefit from stating clearly what came with Java 5.0, and then what was added in Java 6.0. The release date for Java 5.0 does occur later in the article, and this should (IMO) be moved to the article introduction to provide a context for this article.[[User:Pat Palmer|Pat Palmer]] 01:43, 17 August 2010 (UTC) | ||
:Specifically, someone could compare this Java 5 summary: http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/package-summary.html with this Java 6 summary: http://download-llnw.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html and list out the new capabilities within each of the five areas identified on the Java API page. | |||
===Definitions all done by quotes=== | ===Definitions all done by quotes=== | ||
Directly quoting another author for every definition of a term seems like overkill. Definitions should generally be paraphrased into one's own words. The only reason for placing a reference on the definition of a widely-known term is if the person or source being cited is being given credit for inventing the concept represented by the term. These "definition quotes" all need to be transformed. The references can be kept by placing a pointer to the reference on the Bibiography or External Links tabs.[[User:Pat Palmer|Pat Palmer]] 01:50, 17 August 2010 (UTC) | Directly quoting another author for every definition of a term seems like overkill. Definitions should generally be paraphrased into one's own words. The only reason for placing a reference on the definition of a widely-known term is if the person or source being cited is being given credit for inventing the concept represented by the term. These "definition quotes" all need to be transformed. The references can be kept by placing a pointer to the reference on the Bibiography or External Links tabs.[[User:Pat Palmer|Pat Palmer]] 01:50, 17 August 2010 (UTC) | ||
===History and opinion=== | |||
The first paragraph of the history section starts with a statement about what was "historically" the case. People do not always agree on matters such as this, so it's probably important (in addition to providing the reference where the statement came from), to add to the text words such as "according to Deitel et al." or some such.[[User:Pat Palmer|Pat Palmer]] 02:00, 17 August 2010 (UTC) | |||
===Executors section=== | |||
It would be helpful to explain why using an Executor (2 lines of code) is preferred over explicitly launching one thread (1 line of code). The section ends by speaking of "low-level details of thread management"; this needs to have some examples cited, because as it stands, it is not clear to me why I might want to use an Executor rather than creating a thread explicitly.[[User:Pat Palmer|Pat Palmer]] 02:19, 17 August 2010 (UTC) | |||
===Queues section=== | |||
This section contains some excellent examples which illustrate semaphores (the "parking garage" example) and blocking queues (the "cook and eater" example). The latter is a classic concurrency problem which is usually called "producer-consumer", and so that terminology should also probably appear in that section. The NonBlockingCounter example needs a little more attention. I believe that the .compareAndSet() method corresponds to a machine instruction present for most load-store machine instructions sets. The Goetz book on Concurrency should have an explanation of this somewhere in its later sections.[[User:Pat Palmer|Pat Palmer]] 02:25, 17 August 2010 (UTC) | |||
===Timing=== | |||
Sorry, I simply do not understand this section. It needs to be revised. Also, why cite Oracle and not the SUN API? And then, of course, the reference, when followed, DOES go to the Java API.[[User:Pat Palmer|Pat Palmer]] 02:29, 17 August 2010 (UTC) | |||
===Sync before Java 5=== | |||
The descriptions of wait(), notify() and notifyAll() are glossed over quickly. IMO, either they should not be described here, or they should be described adequately and an appropriate example given.[[User:Pat Palmer|Pat Palmer]] 02:29, 17 August 2010 (UTC) | |||
===Concurrent Collections=== | |||
The quote which makes up the entire second paragraph contains an undesirable buzz phrase "at the expense of poorer scalability". This likely means something along the lines of "Synchronized classes will run slower because things can only happen, in them, sequentially; no concurrency is allowed, and so performance suffers." Better not to cite an already badly written sentence IMO.[[User:Pat Palmer|Pat Palmer]] 02:32, 17 August 2010 (UTC) | |||
:The statement "Only basic concepts will be introduced here due to the complexity of this component in the Java concurrency package" gives me pause. Aren't we computer scientists? Surely this is not too complex for us to discuss in an article entitled "Java concurrency package". In the future, a better thing to do if, say, there was simply no time to cover it, would be to make a reminder note on this talk page that it should be added when someone gets time. But actually, this article need not cover everything. I just didn't like the way its worded.[[User:Pat Palmer|Pat Palmer]] 02:36, 17 August 2010 (UTC) | |||
===Related Articles and External Links=== | |||
It's great to see these. Technically, they should be moved from the bottom of the article onto the separate tabs provided for that purpose.[[User:Pat Palmer|Pat Palmer]] 02:38, 17 August 2010 (UTC) | |||
== Earlier devices? == | |||
Isn't the first machine for multithread synchronization called a loom? [[User:Howard C. Berkowitz|Howard C. Berkowitz]] 04:07, 17 August 2010 (UTC) | |||
:funny, Howard![[User:Pat Palmer|Pat Palmer]] 03:23, 19 August 2010 (UTC) |
Latest revision as of 21:23, 18 August 2010
overall comments
This is a great beginning. The article as it stands today is already useful. Some suggested enhancements which might still be done are detailed in the following subsections:Pat Palmer 01:43, 17 August 2010 (UTC)
what features are in Java 5.0 vs. Java 6.0
My understanding is that Java 6.0 introduced some new data synchronization constructs into the language. This article would benefit from stating clearly what came with Java 5.0, and then what was added in Java 6.0. The release date for Java 5.0 does occur later in the article, and this should (IMO) be moved to the article introduction to provide a context for this article.Pat Palmer 01:43, 17 August 2010 (UTC)
- Specifically, someone could compare this Java 5 summary: http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/package-summary.html with this Java 6 summary: http://download-llnw.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html and list out the new capabilities within each of the five areas identified on the Java API page.
Definitions all done by quotes
Directly quoting another author for every definition of a term seems like overkill. Definitions should generally be paraphrased into one's own words. The only reason for placing a reference on the definition of a widely-known term is if the person or source being cited is being given credit for inventing the concept represented by the term. These "definition quotes" all need to be transformed. The references can be kept by placing a pointer to the reference on the Bibiography or External Links tabs.Pat Palmer 01:50, 17 August 2010 (UTC)
History and opinion
The first paragraph of the history section starts with a statement about what was "historically" the case. People do not always agree on matters such as this, so it's probably important (in addition to providing the reference where the statement came from), to add to the text words such as "according to Deitel et al." or some such.Pat Palmer 02:00, 17 August 2010 (UTC)
Executors section
It would be helpful to explain why using an Executor (2 lines of code) is preferred over explicitly launching one thread (1 line of code). The section ends by speaking of "low-level details of thread management"; this needs to have some examples cited, because as it stands, it is not clear to me why I might want to use an Executor rather than creating a thread explicitly.Pat Palmer 02:19, 17 August 2010 (UTC)
Queues section
This section contains some excellent examples which illustrate semaphores (the "parking garage" example) and blocking queues (the "cook and eater" example). The latter is a classic concurrency problem which is usually called "producer-consumer", and so that terminology should also probably appear in that section. The NonBlockingCounter example needs a little more attention. I believe that the .compareAndSet() method corresponds to a machine instruction present for most load-store machine instructions sets. The Goetz book on Concurrency should have an explanation of this somewhere in its later sections.Pat Palmer 02:25, 17 August 2010 (UTC)
Timing
Sorry, I simply do not understand this section. It needs to be revised. Also, why cite Oracle and not the SUN API? And then, of course, the reference, when followed, DOES go to the Java API.Pat Palmer 02:29, 17 August 2010 (UTC)
Sync before Java 5
The descriptions of wait(), notify() and notifyAll() are glossed over quickly. IMO, either they should not be described here, or they should be described adequately and an appropriate example given.Pat Palmer 02:29, 17 August 2010 (UTC)
Concurrent Collections
The quote which makes up the entire second paragraph contains an undesirable buzz phrase "at the expense of poorer scalability". This likely means something along the lines of "Synchronized classes will run slower because things can only happen, in them, sequentially; no concurrency is allowed, and so performance suffers." Better not to cite an already badly written sentence IMO.Pat Palmer 02:32, 17 August 2010 (UTC)
- The statement "Only basic concepts will be introduced here due to the complexity of this component in the Java concurrency package" gives me pause. Aren't we computer scientists? Surely this is not too complex for us to discuss in an article entitled "Java concurrency package". In the future, a better thing to do if, say, there was simply no time to cover it, would be to make a reminder note on this talk page that it should be added when someone gets time. But actually, this article need not cover everything. I just didn't like the way its worded.Pat Palmer 02:36, 17 August 2010 (UTC)
Related Articles and External Links
It's great to see these. Technically, they should be moved from the bottom of the article onto the separate tabs provided for that purpose.Pat Palmer 02:38, 17 August 2010 (UTC)
Earlier devices?
Isn't the first machine for multithread synchronization called a loom? Howard C. Berkowitz 04:07, 17 August 2010 (UTC)
- funny, Howard!Pat Palmer 03:23, 19 August 2010 (UTC)