René's URL Explorer Experiment


Title: GitHub - kachida/java-concurrency: Checklist for code reviews

Open Graph Title: GitHub - kachida/java-concurrency: Checklist for code reviews

X Title: GitHub - kachida/java-concurrency: Checklist for code reviews

Description: Checklist for code reviews. Contribute to kachida/java-concurrency development by creating an account on GitHub.

Open Graph Description: Checklist for code reviews. Contribute to kachida/java-concurrency development by creating an account on GitHub.

X Description: Checklist for code reviews. Contribute to kachida/java-concurrency development by creating an account on GitHub.

Opengraph URL: https://github.com/kachida/java-concurrency

X: @github

direct link

Domain: patch-diff.githubusercontent.com

route-pattern/:user_id/:repository
route-controllerfiles
route-actiondisambiguate
fetch-noncev2:4ce22f63-12cc-5d6b-5ac6-433c6f52624c
current-catalog-service-hashf3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb
request-idB00C:2153D2:2A44C7:3BCCE7:6978B1F7
html-safe-nonced0a0cccb2e668a5d8a8e1f7b8e2553884bc3fc41cc32fd17063dcd4d7cd1ddaa
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCMDBDOjIxNTNEMjoyQTQ0Qzc6M0JDQ0U3OjY5NzhCMUY3IiwidmlzaXRvcl9pZCI6IjkxODcwMDcxNzYzNDAwNzU0MyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac9e6332fc19abd78a992184414b588531b25d2d395fc0c841de1949197a2e2f96
hovercard-subject-tagrepository:802455787
github-keyboard-shortcutsrepository,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location//
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/kachida/java-concurrency
twitter:imagehttps://opengraph.githubassets.com/2629b54cad7d10313bf7751fb0155d52eab66395d1bb28665e96856582794d25/kachida/java-concurrency
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/2629b54cad7d10313bf7751fb0155d52eab66395d1bb28665e96856582794d25/kachida/java-concurrency
og:image:altChecklist for code reviews. Contribute to kachida/java-concurrency development by creating an account on GitHub.
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None2981c597c945c1d90ac6fa355ce7929b2f413dfe7872ca5c435ee53a24a1de50
turbo-cache-controlno-preview
go-importgithub.com/kachida/java-concurrency git https://github.com/kachida/java-concurrency.git
octolytics-dimension-user_id5069893
octolytics-dimension-user_loginkachida
octolytics-dimension-repository_id802455787
octolytics-dimension-repository_nwokachida/java-concurrency
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forktrue
octolytics-dimension-repository_parent_id174599241
octolytics-dimension-repository_parent_nwocode-review-checklists/java-concurrency
octolytics-dimension-repository_network_root_id174599241
octolytics-dimension-repository_network_root_nwocode-review-checklists/java-concurrency
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasef8aa86d87c47054170094daaf9699b27a28a8448
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://patch-diff.githubusercontent.com/kachida/java-concurrency#start-of-content
https://patch-diff.githubusercontent.com/
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Fkachida%2Fjava-concurrency
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Fkachida%2Fjava-concurrency
Sign up https://patch-diff.githubusercontent.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=kachida%2Fjava-concurrency
Reloadhttps://patch-diff.githubusercontent.com/kachida/java-concurrency
Reloadhttps://patch-diff.githubusercontent.com/kachida/java-concurrency
Reloadhttps://patch-diff.githubusercontent.com/kachida/java-concurrency
kachida https://patch-diff.githubusercontent.com/kachida
java-concurrencyhttps://patch-diff.githubusercontent.com/kachida/java-concurrency
code-review-checklists/java-concurrencyhttps://patch-diff.githubusercontent.com/code-review-checklists/java-concurrency
Notifications https://patch-diff.githubusercontent.com/login?return_to=%2Fkachida%2Fjava-concurrency
Fork 0 https://patch-diff.githubusercontent.com/login?return_to=%2Fkachida%2Fjava-concurrency
Star 0 https://patch-diff.githubusercontent.com/login?return_to=%2Fkachida%2Fjava-concurrency
0 stars https://patch-diff.githubusercontent.com/kachida/java-concurrency/stargazers
155 forks https://patch-diff.githubusercontent.com/kachida/java-concurrency/forks
Branches https://patch-diff.githubusercontent.com/kachida/java-concurrency/branches
Tags https://patch-diff.githubusercontent.com/kachida/java-concurrency/tags
Activity https://patch-diff.githubusercontent.com/kachida/java-concurrency/activity
Star https://patch-diff.githubusercontent.com/login?return_to=%2Fkachida%2Fjava-concurrency
Notifications https://patch-diff.githubusercontent.com/login?return_to=%2Fkachida%2Fjava-concurrency
Code https://patch-diff.githubusercontent.com/kachida/java-concurrency
Pull requests 0 https://patch-diff.githubusercontent.com/kachida/java-concurrency/pulls
Actions https://patch-diff.githubusercontent.com/kachida/java-concurrency/actions
Projects 0 https://patch-diff.githubusercontent.com/kachida/java-concurrency/projects
Security 0 https://patch-diff.githubusercontent.com/kachida/java-concurrency/security
Insights https://patch-diff.githubusercontent.com/kachida/java-concurrency/pulse
Code https://patch-diff.githubusercontent.com/kachida/java-concurrency
Pull requests https://patch-diff.githubusercontent.com/kachida/java-concurrency/pulls
Actions https://patch-diff.githubusercontent.com/kachida/java-concurrency/actions
Projects https://patch-diff.githubusercontent.com/kachida/java-concurrency/projects
Security https://patch-diff.githubusercontent.com/kachida/java-concurrency/security
Insights https://patch-diff.githubusercontent.com/kachida/java-concurrency/pulse
Brancheshttps://patch-diff.githubusercontent.com/kachida/java-concurrency/branches
Tagshttps://patch-diff.githubusercontent.com/kachida/java-concurrency/tags
https://patch-diff.githubusercontent.com/kachida/java-concurrency/branches
https://patch-diff.githubusercontent.com/kachida/java-concurrency/tags
84 Commitshttps://patch-diff.githubusercontent.com/kachida/java-concurrency/commits/master/
https://patch-diff.githubusercontent.com/kachida/java-concurrency/commits/master/
README.mdhttps://patch-diff.githubusercontent.com/kachida/java-concurrency/blob/master/README.md
README.mdhttps://patch-diff.githubusercontent.com/kachida/java-concurrency/blob/master/README.md
_config.ymlhttps://patch-diff.githubusercontent.com/kachida/java-concurrency/blob/master/_config.yml
_config.ymlhttps://patch-diff.githubusercontent.com/kachida/java-concurrency/blob/master/_config.yml
READMEhttps://patch-diff.githubusercontent.com/kachida/java-concurrency
https://patch-diff.githubusercontent.com/kachida/java-concurrency#code-review-checklist-java-concurrency
Concurrency is rationalized?https://patch-diff.githubusercontent.com/kachida/java-concurrency#rationalize
Can use patterns to simplify concurrency?https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-patterns
Usage of synchronized with wait/notify instead of concurrency utilities https://patch-diff.githubusercontent.com/kachida/java-concurrency#avoid-wait-notify
Nested critical sectionshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#avoid-nested-critical-sections
Extension API call within a critical sectionhttps://patch-diff.githubusercontent.com/kachida/java-concurrency#non-open-call
Large critical sectionhttps://patch-diff.githubusercontent.com/kachida/java-concurrency#minimize-critical-sections
Waiting in a loop for some resulthttps://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-busy-wait
Non-static ThreadLocalhttps://patch-diff.githubusercontent.com/kachida/java-concurrency#threadlocal-design
Thread.sleep()https://patch-diff.githubusercontent.com/kachida/java-concurrency#no-sleep-schedule
Thread safety is justified in comments?https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-document
Class (method, field) has concurrent access documentation?https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-document
Threading model of a subsystem (class) is described?https://patch-diff.githubusercontent.com/kachida/java-concurrency#threading-flow-model
Concurrent control flow (or data flow) of a subsystem (class) is described? https://patch-diff.githubusercontent.com/kachida/java-concurrency#threading-flow-model
Class is documented as immutable, thread-safe, or not thread-safe?https://patch-diff.githubusercontent.com/kachida/java-concurrency#immutable-thread-safe
Used concurrency patterns are pronounced?https://patch-diff.githubusercontent.com/kachida/java-concurrency#name-patterns
ConcurrentHashMap is not stored in a variable of Map type?https://patch-diff.githubusercontent.com/kachida/java-concurrency#concurrent-map-type
compute()-like methods are not called on a variable of ConcurrentMap type?https://patch-diff.githubusercontent.com/kachida/java-concurrency#chm-type
@GuardedBy annotation is used?https://patch-diff.githubusercontent.com/kachida/java-concurrency#guarded-by
Safety of a benign race (e. g. unbalanced synchronization) is explained?https://patch-diff.githubusercontent.com/kachida/java-concurrency#document-benign-race
Each use of volatile is justified?https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-volatile
Each field that is neither volatile nor annotated with @GuardedBy has a comment? https://patch-diff.githubusercontent.com/kachida/java-concurrency#plain-field
Static methods and fields are thread-safe?https://patch-diff.githubusercontent.com/kachida/java-concurrency#static-thread-safe
Thread doesn't wait in a loop for a non-volatile field to be updated by another thread? https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-volatile-visibility
Read access to a non-volatile, concurrently updatable primitive field is protected? https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-volatile-protection
Servlets, Controllers, Filters, Handlers, @Get/@Post methods are thread-safe? https://patch-diff.githubusercontent.com/kachida/java-concurrency#server-framework-sync
Calls to DateFormat.parse() and format() are synchronized?https://patch-diff.githubusercontent.com/kachida/java-concurrency#dateformat
No "extra" (pseudo) thread safety?https://patch-diff.githubusercontent.com/kachida/java-concurrency#pseudo-safety
No atomics on which only get() and set() are called?https://patch-diff.githubusercontent.com/kachida/java-concurrency#redundant-atomics
Class (method) needs to be thread-safe?https://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-thread-safety
ReentrantLock (ReentrantReadWriteLock, Semaphore) needs to be fair?https://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-fairness
No put() or remove() calls on a ConcurrentMap (or Cache) after get() or containsKey()?https://patch-diff.githubusercontent.com/kachida/java-concurrency#chm-race
No point accesses to a non-thread-safe collection outside of critical sections? https://patch-diff.githubusercontent.com/kachida/java-concurrency#unsafe-concurrent-point-read
Iteration over a non-thread-safe collection doesn't leak outside of a critical section? https://patch-diff.githubusercontent.com/kachida/java-concurrency#unsafe-concurrent-iteration
A non-thread-safe collection is not returned wrapped in Collections.unmodifiable*() from a getter in a thread-safe class?https://patch-diff.githubusercontent.com/kachida/java-concurrency#unsafe-concurrent-iteration
A synchronized collection is not returned from a getter? in a thread-safe class? https://patch-diff.githubusercontent.com/kachida/java-concurrency#unsafe-concurrent-iteration
Non-trivial mutable object is not returned from a getter in a thread-safe class? https://patch-diff.githubusercontent.com/kachida/java-concurrency#concurrent-mutation-race
No separate getters to an atomically updated state?https://patch-diff.githubusercontent.com/kachida/java-concurrency#moving-state-race
No check-then-act race conditions (state used inside a critical section is read outside of it)?https://patch-diff.githubusercontent.com/kachida/java-concurrency#read-outside-critical-section-race
coll.toArray(new E[coll.size()]) is not called on a synchronized collection? https://patch-diff.githubusercontent.com/kachida/java-concurrency#read-outside-critical-section-race
No race conditions with user or programmatic input or interop between programs? https://patch-diff.githubusercontent.com/kachida/java-concurrency#outside-world-race
No check-then-act race conditions with file system operations?https://patch-diff.githubusercontent.com/kachida/java-concurrency#outside-world-race
No concurrent invalidate(key) and get() calls on Guava's loading Cache? https://patch-diff.githubusercontent.com/kachida/java-concurrency#guava-cache-invalidation-race
Cache.put() is not used (nor exposed in the own Cache interface)?https://patch-diff.githubusercontent.com/kachida/java-concurrency#cache-invalidation-race
Concurrent invalidation race is not possible on a lazily initialized state? https://patch-diff.githubusercontent.com/kachida/java-concurrency#cache-invalidation-race
Iteration, Stream pipeline, or copying a Collections.synchronized*() collection is protected by the lock?https://patch-diff.githubusercontent.com/kachida/java-concurrency#synchronized-collection-iter
A synchronized collection is passed into containsAll(), addAll(), removeAll(), or putAll() under the lock?https://patch-diff.githubusercontent.com/kachida/java-concurrency#synchronized-collection-iter
Considered adding multi-threaded unit tests for a thread-safe class or method? https://patch-diff.githubusercontent.com/kachida/java-concurrency#multi-threaded-tests
What is the worst thing that might happen if the code has a concurrency bug? https://patch-diff.githubusercontent.com/kachida/java-concurrency#multi-threaded-tests
A shared Random instance is not used from concurrent test workers?https://patch-diff.githubusercontent.com/kachida/java-concurrency#concurrent-test-random
Concurrent test workers coordinate their start?https://patch-diff.githubusercontent.com/kachida/java-concurrency#coordinate-test-workers
There are more test threads than CPUs (if possible for the test)?https://patch-diff.githubusercontent.com/kachida/java-concurrency#test-workers-interleavings
Assertions in parallel threads and asynchronous code are handled properly?https://patch-diff.githubusercontent.com/kachida/java-concurrency#concurrent-assert
Checked the result of CountDownLatch.await()?https://patch-diff.githubusercontent.com/kachida/java-concurrency#check-await
Can use some concurrency utility instead of a lock with conditional wait (await) calls? https://patch-diff.githubusercontent.com/kachida/java-concurrency#avoid-wait-notify
Can use Guava’s Monitor instead of a lock with conditional wait (await) calls? https://patch-diff.githubusercontent.com/kachida/java-concurrency#guava-monitor
Can use synchronized instead of a ReentrantLock?https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-synchronized
lock() is called outside of try {}? No statements between lock() and try {}? https://patch-diff.githubusercontent.com/kachida/java-concurrency#lock-unlock
Can avoid nested critical sections?https://patch-diff.githubusercontent.com/kachida/java-concurrency#avoid-nested-critical-sections
Locking order for nested critical sections is documented?https://patch-diff.githubusercontent.com/kachida/java-concurrency#document-locking-order
Dynamically determined locks for nested critical sections are ordered?https://patch-diff.githubusercontent.com/kachida/java-concurrency#dynamic-lock-ordering
No extension API calls within critical sections?https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-open-call
No calls to ConcurrentHashMap's methods (incl. get()) in compute()-like lambdas on the same map?https://patch-diff.githubusercontent.com/kachida/java-concurrency#chm-nested-calls
Critical section is as small as possible?https://patch-diff.githubusercontent.com/kachida/java-concurrency#minimize-critical-sections
Can use ConcurrentHashMap.compute() or Guava's Striped for per-key locking? https://patch-diff.githubusercontent.com/kachida/java-concurrency#increase-locking-granularity
Can replace a blocking collection or a queue with a concurrent one?https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-blocking-collections
Can use ClassValue instead of ConcurrentHashMap?https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-class-value
Considered ReadWriteLock (or StampedLock) instead of a simple lock?https://patch-diff.githubusercontent.com/kachida/java-concurrency#read-write-lock
StampedLock is used instead of ReadWriteLock when reentrancy is not needed? https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-stamped-lock
Considered LongAdder instead of an AtomicLong for a "hot field"? https://patch-diff.githubusercontent.com/kachida/java-concurrency#long-adder-for-hot-fields
Considered queues from JCTools instead of the standard concurrent queues?https://patch-diff.githubusercontent.com/kachida/java-concurrency#jctools
Considered Caffeine cache instead of other caching libraries?https://patch-diff.githubusercontent.com/kachida/java-concurrency#caffeine
Can apply speculation (optimistic concurrency) technique?https://patch-diff.githubusercontent.com/kachida/java-concurrency#speculation
Considered ForkJoinPool instead of newFixedThreadPool(N)?https://patch-diff.githubusercontent.com/kachida/java-concurrency#fjp-instead-tpe
Lazy initialization of a field should be thread-safe?https://patch-diff.githubusercontent.com/kachida/java-concurrency#lazy-init-thread-safety
Considered double-checked locking for a lazy initialization to improve performance? https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-dcl
Double-checked locking follows the SafeLocalDCL pattern?https://patch-diff.githubusercontent.com/kachida/java-concurrency#safe-local-dcl
Considered eager initialization instead of a lazy initialization to simplify code? https://patch-diff.githubusercontent.com/kachida/java-concurrency#eager-init
Can do lazy initialization with a benign race and without locking to improve performance? https://patch-diff.githubusercontent.com/kachida/java-concurrency#lazy-init-benign-race
Holder class idiom is used for lazy static fields rather than double-checked locking? https://patch-diff.githubusercontent.com/kachida/java-concurrency#no-static-dcl
Non-blocking code has enough comments to make line-by-line checking as easy as possible? https://patch-diff.githubusercontent.com/kachida/java-concurrency#check-non-blocking-code
Can use immutable POJO + compare-and-swap operations to simplify non-blocking code? https://patch-diff.githubusercontent.com/kachida/java-concurrency#swap-state-atomically
Boundaries of non-blocking or benignly racy code are identified with WARNING comments? https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-blocking-warning
Busy waiting (spin loop), all calls to Thread.yield() and Thread.onSpinWait() are justified? https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-busy-wait
Thread is named?https://patch-diff.githubusercontent.com/kachida/java-concurrency#name-threads
Can use ExecutorService instead of creating a new Thread each time some method is called? https://patch-diff.githubusercontent.com/kachida/java-concurrency#reuse-threads
ExecutorServices are not created within short-lived objects (but rather reused)? https://patch-diff.githubusercontent.com/kachida/java-concurrency#reuse-threads
No network I/O in a CachedThreadPool?https://patch-diff.githubusercontent.com/kachida/java-concurrency#cached-thread-pool-no-io
No blocking (incl. I/O) operations in a ForkJoinPool or in a parallel Stream pipeline? https://patch-diff.githubusercontent.com/kachida/java-concurrency#fjp-no-blocking
Can execute non-blocking computation in FJP.commonPool() instead of a custom thread pool? https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-common-fjp
ExecutorService is shut down explicitly?https://patch-diff.githubusercontent.com/kachida/java-concurrency#explicit-shutdown
Callback is attached to a CompletableFuture (SettableFuture) in non-async mode only if either:https://patch-diff.githubusercontent.com/kachida/java-concurrency#cf-beware-non-async
Adding a callback to a CompletableFuture (SettableFuture) in non-async mode is justified? https://patch-diff.githubusercontent.com/kachida/java-concurrency#cf-beware-non-async
Actions are delayed via a ScheduledExecutorService rather than Thread.sleep()? https://patch-diff.githubusercontent.com/kachida/java-concurrency#no-sleep-schedule
Checked the result of awaitTermination()?https://patch-diff.githubusercontent.com/kachida/java-concurrency#check-await-termination
ExecutorService is not assigned into a variable of Executor type?https://patch-diff.githubusercontent.com/kachida/java-concurrency#executor-service-type-loss
ScheduledExecutorService is not assigned into a variable of ExecutorService type?https://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-scheduled-executor-service
Parallel Stream computation takes more than 100us in total?https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-parallel-stream-use
Comment before a parallel Streams pipeline explains how it takes more than 100us in total? https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-parallel-stream-use
Non-blocking computation needs to be decorated as a Future?https://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-future
Method returning a Future doesn't block?https://patch-diff.githubusercontent.com/kachida/java-concurrency#future-method-no-blocking
In a method returning a Future, considered wrapping an "expected" exception as a failed Future?https://patch-diff.githubusercontent.com/kachida/java-concurrency#future-method-failure-paths
Interruption status is restored before wrapping InterruptedException with another exception? https://patch-diff.githubusercontent.com/kachida/java-concurrency#restore-interruption
InterruptedException is swallowed only in the following kinds of methods: https://patch-diff.githubusercontent.com/kachida/java-concurrency#interruption-swallowing
InterruptedException swallowing is documented for a method?https://patch-diff.githubusercontent.com/kachida/java-concurrency#interruption-swallowing
Can use Guava's Uninterruptibles to avoid InterruptedException swallowing? https://patch-diff.githubusercontent.com/kachida/java-concurrency#interruption-swallowing
Future is canceled upon catching an InterruptedException or a TimeoutException on get()? https://patch-diff.githubusercontent.com/kachida/java-concurrency#cancel-future
nanoTime() values are compared in an overflow-aware manner?https://patch-diff.githubusercontent.com/kachida/java-concurrency#nano-time-overflow
currentTimeMillis() is not used to measure time intervals and timeouts? https://patch-diff.githubusercontent.com/kachida/java-concurrency#time-going-backward
Units for a time variable are identified in the variable's name or via TimeUnit?https://patch-diff.githubusercontent.com/kachida/java-concurrency#time-units
Negative timeouts and delays are treated as zeros?https://patch-diff.githubusercontent.com/kachida/java-concurrency#treat-negative-timeout-as-zero
Tasks connected to system time or UTC time are not scheduled using ScheduledThreadPoolExecutor?https://patch-diff.githubusercontent.com/kachida/java-concurrency#external-interaction-schedule
Human and external interactions on consumer devices are not scheduled using ScheduledThreadPoolExecutor?https://patch-diff.githubusercontent.com/kachida/java-concurrency#user-interaction-schedule
ThreadLocal can be static final?https://patch-diff.githubusercontent.com/kachida/java-concurrency#tl-static-final
Can redesign a subsystem to avoid usage of ThreadLocal (esp. non-static one)? https://patch-diff.githubusercontent.com/kachida/java-concurrency#threadlocal-design
ThreadLocal is not used just to avoid moderate amount of allocation? https://patch-diff.githubusercontent.com/kachida/java-concurrency#threadlocal-performance
Considered replacing a non-static ThreadLocal with an instance-confined Map? https://patch-diff.githubusercontent.com/kachida/java-concurrency#tl-instance-chm
close() is concurrently idempotent in a class with a Cleaner or finalize()? https://patch-diff.githubusercontent.com/kachida/java-concurrency#thread-safe-close-with-cleaner
Method accessing native state calls reachabilityFence() in a class with a Cleaner or finalize()?https://patch-diff.githubusercontent.com/kachida/java-concurrency#reachability-fence
Cleaner or finalize() is used for real cleanup, not mere reporting?https://patch-diff.githubusercontent.com/kachida/java-concurrency#finalize-misuse
Considered making a class with native state thread-safe?https://patch-diff.githubusercontent.com/kachida/java-concurrency#thread-safe-native
https://patch-diff.githubusercontent.com/kachida/java-concurrency#design
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#rationalize
justified in commentshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-document
unneeded thread-safety of classes and methodshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-thread-safety
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-patterns
RC.5https://patch-diff.githubusercontent.com/kachida/java-concurrency#moving-state-race
NB.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#swap-state-atomically
persistent data structureshttps://en.wikipedia.org/wiki/Persistent_data_structure
Parallel Streamshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#parallel-streams
TE.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#fjp-no-blocking
TE.5https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-common-fjp
Dl.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#avoid-nested-critical-sections
CSPhttps://en.wikipedia.org/wiki/Communicating_sequential_processes
SEDAhttps://en.wikipedia.org/wiki/Staged_event-driven_architecture
RC.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#unsafe-concurrent-iteration
RC.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#concurrent-mutation-race
RC.5https://patch-diff.githubusercontent.com/kachida/java-concurrency#moving-state-race
TL.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#tl-instance-chm
the checklist section about ThreadLocalshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#threadlocal
article on Wikipediahttps://en.wikipedia.org/wiki/Active_object
TE.6https://patch-diff.githubusercontent.com/kachida/java-concurrency#explicit-shutdown
https://patch-diff.githubusercontent.com/kachida/java-concurrency#documentation
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-document
PS.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-parallel-stream-use
NB.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-blocking-warning
NB.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-busy-wait
unnecessary thread-safetyhttps://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-thread-safety
redundant atomicshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#redundant-atomics
redundant volatile modifiershttps://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-volatile
unneeded Futureshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-future
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#threading-flow-model
Dn.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-patterns
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#immutable-thread-safe
CON52-Jhttps://wiki.sei.cmu.edu/confluence/display/java/CON52-J.+Document+thread-safety+and+use+annotations+where+applicable
Error Pronehttps://errorprone.info/
bug patternhttps://errorprone.info/bugpattern/Immutable
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#name-patterns
Dn.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-patterns
double-checked lockinghttps://patch-diff.githubusercontent.com/kachida/java-concurrency#lazy-init
spin loopinghttps://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-busy-wait
Dc.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#immutable-thread-safe
Dc.7https://patch-diff.githubusercontent.com/kachida/java-concurrency#guarded-by
LI.5https://patch-diff.githubusercontent.com/kachida/java-concurrency#lazy-init-benign-race
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#concurrent-map-type
RC.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#chm-race
an inspectionhttps://github.com/apache/incubator-druid/pull/6898/files#diff-3aa5d63fbb1f0748c146f88b6f0efc81R239
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#chm-type
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#guarded-by
jcip-annotationshttps://search.maven.org/artifact/net.jcip/jcip-annotations/1.0/jar
error_prone_annotationshttps://search.maven.org/search?q=a:error_prone_annotations%20g:com.google.errorprone
jsr305https://search.maven.org/search?q=g:com.google.code.findbugs%20a:jsr305
Error Pronehttps://errorprone.info/
statically check for unguarded accesses to fields and methods with @GuardedBy annotationshttps://errorprone.info/bugpattern/GuardedBy
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#document-benign-race
RC.5https://patch-diff.githubusercontent.com/kachida/java-concurrency#moving-state-race
IS.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-volatile-visibility
IS.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-volatile-protection
RC.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#unsafe-concurrent-point-read
@LazyInithttp://errorprone.info/api/latest/com/google/errorprone/annotations/concurrent/LazyInit.html
error_prone_annotationshttps://search.maven.org/search?q=a:error_prone_annotations%20g:com.google.errorprone
LI.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#safe-local-dcl
LI.5https://patch-diff.githubusercontent.com/kachida/java-concurrency#lazy-init-benign-race
NB.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-blocking-warning
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-volatile
Java Memory Modelhttps://docs.oracle.com/javase/specs/jls/se11/html/jls-17.html#jls-17.4
Dc.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#name-patterns
herehttps://shipilev.net/blog/2014/safe-public-construction/#_safe_publication
linearizability of values observed by reader threadshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#safe-local-dcl
unnecessary atomichttps://patch-diff.githubusercontent.com/kachida/java-concurrency#redundant-atomics
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#plain-field
Dc.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-document
IS.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-volatile-visibility
IS.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-volatile-protection
RC.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#unsafe-concurrent-point-read
RC.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#unsafe-concurrent-iteration
RC.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#concurrent-mutation-race
https://patch-diff.githubusercontent.com/kachida/java-concurrency#insufficient-synchronization
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#static-thread-safe
IS.5https://patch-diff.githubusercontent.com/kachida/java-concurrency#dateformat
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-volatile-visibility
VNA00-Jhttps://wiki.sei.cmu.edu/confluence/display/java/VNA00-J.+Ensure+visibility+when+accessing+shared+primitive+variables
NB.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-busy-wait
Dc.10https://patch-diff.githubusercontent.com/kachida/java-concurrency#plain-field
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-volatile-protection
JLS 17.7https://docs.oracle.com/javase/specs/jls/se11/html/jls-17.html#jls-17.7
VNA05-Jhttps://wiki.sei.cmu.edu/confluence/display/java/VNA05-J.+Ensure+atomicity+when+reading+and+writing+64-bit+values
Dc.8https://patch-diff.githubusercontent.com/kachida/java-concurrency#document-benign-race
Dc.10https://patch-diff.githubusercontent.com/kachida/java-concurrency#plain-field
RC.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#unsafe-concurrent-point-read
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#server-framework-sync
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#dateformat
https://patch-diff.githubusercontent.com/kachida/java-concurrency#excessive-thread-safety
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#pseudo-safety
safe local double-checked locking patternhttp://hg.openjdk.java.net/code-tools/jcstress/file/9270b927e00f/tests-custom/src/main/java/org/openjdk/jcstress/tests/singletons/SafeLocalDCL.java#l71
excessive for correctnesshttps://shipilev.net/blog/2014/safe-public-construction/#_correctness
*https://shipilev.net/blog/2014/safe-public-construction/#_safe_initialization
Dc.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#immutable-thread-safe
UnsafeLocalDCLhttp://hg.openjdk.java.net/code-tools/jcstress/file/9270b927e00f/tests-custom/src/main/java/org/openjdk/jcstress/tests/singletons/UnsafeLocalDCL.java#l71
the section about double-checked lockinghttps://patch-diff.githubusercontent.com/kachida/java-concurrency#lazy-init
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#redundant-atomics
Dc.9https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-volatile
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-thread-safety
Ft.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-future
Dc.9https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-volatile
Dn.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#rationalize
Dc.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-document
CN.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#thread-safe-native
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-fairness
https://patch-diff.githubusercontent.com/kachida/java-concurrency#race-conditions
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#chm-race
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#unsafe-concurrent-point-read
this threadhttp://cs.oswego.edu/pipermail/concurrency-interest/2018-September/016526.html
IS.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-volatile-protection
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#unsafe-concurrent-iteration
Sc.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-blocking-collections
RC.10https://patch-diff.githubusercontent.com/kachida/java-concurrency#synchronized-collection-iter
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#concurrent-mutation-race
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#moving-state-race
NB.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#swap-state-atomically
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#read-outside-critical-section-race
Arrays of Wisdom of the Ancientshttps://shipilev.net/blog/2016/arrays-wisdom-ancients/
RC.9https://patch-diff.githubusercontent.com/kachida/java-concurrency#cache-invalidation-race
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#outside-world-race
java.nio.file.Fileshttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Files.html
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#guava-cache-invalidation-race
race conditionhttps://github.com/google/guava/issues/1881
Caffeine cachehttps://github.com/ben-manes/caffeine
Sc.9https://patch-diff.githubusercontent.com/kachida/java-concurrency#caffeine
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#cache-invalidation-race
RC.8https://patch-diff.githubusercontent.com/kachida/java-concurrency#guava-cache-invalidation-race
RC.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#chm-race
lazily initialized statehttps://patch-diff.githubusercontent.com/kachida/java-concurrency#lazy-init
non-blocking concurrencyhttps://patch-diff.githubusercontent.com/kachida/java-concurrency#non-blocking
NB.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#swap-state-atomically
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#synchronized-collection-iter
the Javadochttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Collections.html#synchronizedCollection(java.util.Collection)
RC.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#unsafe-concurrent-iteration
https://patch-diff.githubusercontent.com/kachida/java-concurrency#testing
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#multi-threaded-tests
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#concurrent-test-random
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#coordinate-test-workers
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#test-workers-interleavings
Runtime.getRuntime().availableProcessors()https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Runtime.html#availableProcessors()
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#concurrent-assert
ConcurrentUnithttps://github.com/jhalterman/concurrentunit
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#check-await
CountDownLatch.await()https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/CountDownLatch.html#await(long,java.util.concurrent.TimeUnit)
Lock.tryLock()https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/locks/Lock.html
Semaphorehttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/Semaphore.html
RateLimiterhttps://guava.dev/releases/28.1-jre/api/docs/com/google/common/util/concurrent/RateLimiter.html
Monitor.enter(...)https://guava.dev/releases/28.1-jre/api/docs/com/google/common/util/concurrent/Monitor.html
Condition.await(...)https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/locks/Condition.html#await(long,java.util.concurrent.TimeUnit)
separate itemhttps://patch-diff.githubusercontent.com/kachida/java-concurrency#check-await-termination
Process.waitFor(...)https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Process.html#waitFor(long,java.util.concurrent.TimeUnit)
https://patch-diff.githubusercontent.com/kachida/java-concurrency#locks
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#avoid-wait-notify
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#guava-monitor
Monitorhttps://google.github.io/guava/releases/27.0.1-jre/api/docs/com/google/common/util/concurrent/Monitor.html
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-synchronized
ETS.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-fairness
LCK00-Jhttps://wiki.sei.cmu.edu/confluence/display/java/LCK00-J.+Use+private+final+lock+objects+to+synchronize+classes+that+may+interact+with+untrusted+code
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#lock-unlock
try-finally idiomhttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/locks/Lock.html
@LockMethodhttps://errorprone.info/api/latest/com/google/errorprone/annotations/concurrent/LockMethod.html
LCK08-Jhttps://wiki.sei.cmu.edu/confluence/display/java/LCK08-J.+Ensure+actively+held+locks+are+released+on+exceptional+conditions
https://patch-diff.githubusercontent.com/kachida/java-concurrency#avoiding-deadlocks
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#avoid-nested-critical-sections
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#document-locking-order
LCK07-Jhttps://wiki.sei.cmu.edu/confluence/display/java/LCK07-J.+Avoid+deadlock+by+requesting+and+releasing+locks+in+the+same+order
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#dynamic-lock-ordering
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-open-call
Sc.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#minimize-critical-sections
CompletableFuturehttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/CompletableFuture.html
ListenableFuturehttps://guava.dev/releases/28.1-jre/api/docs/com/google/common/util/concurrent/ListenableFuture.html
TE.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#fjp-no-blocking
TE.7https://patch-diff.githubusercontent.com/kachida/java-concurrency#cf-beware-non-async
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#chm-nested-calls
https://patch-diff.githubusercontent.com/kachida/java-concurrency#improving-scalability
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#minimize-critical-sections
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#increase-locking-granularity
Guava’s Stripedhttps://github.com/google/guava/wiki/StripedExplained
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-blocking-collections
SnapTreehttps://github.com/nbronson/snaptree
more efficienthttps://github.com/apache/incubator-druid/pull/6719
Sc.8https://patch-diff.githubusercontent.com/kachida/java-concurrency#jctools
ForkJoinPool instead of newFixedThreadPool(N)https://patch-diff.githubusercontent.com/kachida/java-concurrency#fjp-instead-tpe
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-class-value
ClassValuehttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/ClassValue.html
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#read-write-lock
Sc.2https://patch-diff.githubusercontent.com/kachida/java-concurrency##increase-locking-granularity
this commenthttps://medium.com/@leventov/interesting-perspective-thanks-i-didnt-think-about-this-before-e044eec71870
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-stamped-lock
StampedLockhttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/locks/StampedLock.html
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#long-adder-for-hot-fields
LongAdderhttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/atomic/LongAdder.html
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#jctools
the JCTools libraryhttps://www.baeldung.com/java-concurrency-jc-tools
Sc.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-blocking-collections
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#caffeine
Caffeinehttps://github.com/ben-manes/caffeine
Caffeine's performancehttps://github.com/ben-manes/caffeine/wiki/Benchmarks
RC.8https://patch-diff.githubusercontent.com/kachida/java-concurrency#guava-cache-invalidation-race
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#speculation
Optimistic concurrency controlhttps://en.wikipedia.org/wiki/Optimistic_concurrency_control
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#fjp-instead-tpe
thishttp://cs.oswego.edu/pipermail/concurrency-interest/2020-January/017058.html
thishttp://cs.oswego.edu/pipermail/concurrency-interest/2020-February/017061.html
using non-blocking collections (including queues) instead of blocking oneshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#non-blocking-collections
using JCTools queueshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#jctools
https://patch-diff.githubusercontent.com/kachida/java-concurrency#lazy-initialization-and-double-checked-locking
Safe Publication this and Safe Initialization in Javahttps://shipilev.net/blog/2014/safe-public-construction/
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#lazy-init-thread-safety
RC.9https://patch-diff.githubusercontent.com/kachida/java-concurrency#cache-invalidation-race
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-dcl
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#safe-local-dcl
SafeLocalDCLhttp://hg.openjdk.java.net/code-tools/jcstress/file/9270b927e00f/tests-custom/src/main/java/org/openjdk/jcstress/tests/singletons/SafeLocalDCL.java#l71
ETS.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#pseudo-safety
UnsafeLocalDCLhttp://hg.openjdk.java.net/code-tools/jcstress/file/9270b927e00f/tests-custom/src/main/java/org/openjdk/jcstress/tests/singletons/UnsafeLocalDCL.java#l71
Wishful Thinking: Happens-Before Is The Actual Orderinghttps://shipilev.net/blog/2016/close-encounters-of-jmm-kind/#wishful-hb-actual
Date-Race-Ful Lazy Initialization for Performancehttp://jeremymanson.blogspot.com/2008/12/benign-data-races-in-java.html
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#eager-init
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#lazy-init-benign-race
@LazyInithttp://errorprone.info/api/latest/com/google/errorprone/annotations/concurrent/LazyInit.html
error_prone_annotationshttps://search.maven.org/search?q=a:error_prone_annotations%20g:com.google.errorprone
NB.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-blocking-warning
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#no-static-dcl
lazy initialization holder class idiomhttps://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom
Safe Publication and Safe Initialization in Javahttps://shipilev.net/blog/2014/safe-public-construction/
https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-blocking-and-partially-blocking-code
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#check-non-blocking-code
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#swap-state-atomically
RC.5https://patch-diff.githubusercontent.com/kachida/java-concurrency#moving-state-race
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-blocking-warning
Dc.8https://patch-diff.githubusercontent.com/kachida/java-concurrency#document-benign-race
LI.5https://patch-diff.githubusercontent.com/kachida/java-concurrency#lazy-init-benign-race
Dc.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-document
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-busy-wait
Semaphorehttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/Semaphore.html
CountDownLatchhttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/CountDownLatch.html
Exchangerhttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/Exchanger.html
ListenableFuturehttps://github.com/google/guava/wiki/ListenableFutureExplained
TE.7https://patch-diff.githubusercontent.com/kachida/java-concurrency#cf-beware-non-async
Awaitilityhttps://github.com/awaitility/awaitility
IS.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-volatile-visibility
https://patch-diff.githubusercontent.com/kachida/java-concurrency#threads-and-executors
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#name-threads
forbidden-apishttps://github.com/policeman-tools/forbidden-apis
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#reuse-threads
active objectshttps://en.wikipedia.org/wiki/Active_object
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#cached-thread-pool-no-io
TE.7https://patch-diff.githubusercontent.com/kachida/java-concurrency#cf-beware-non-async
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#fjp-no-blocking
managedBlock()https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/ForkJoinPool.html#managedBlock(java.util.concurrent.ForkJoinPool.ManagedBlocker)
TE.7https://patch-diff.githubusercontent.com/kachida/java-concurrency#cf-beware-non-async
Parallel Stream Guidancehttp://gee.cs.oswego.edu/dl/html/StreamParallelGuidance.html
the section about parallel Streamshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#parallel-streams
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-common-fjp
TE.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#name-threads
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#explicit-shutdown
while finalize() is not guaranteed to ever be calledhttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#finalize()
ExecutorService objects must not be assinged into variables and fields of Executor typehttps://patch-diff.githubusercontent.com/kachida/java-concurrency#executor-service-type-loss
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#cf-beware-non-async
completedhttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/CompletableFuture.html#complete(T)
Futures.addCallback()https://guava.dev/releases/28.1-jre/api/docs/com/google/common/util/concurrent/Futures.html#addCallback-com.google.common.util.concurrent.ListenableFuture-com.google.common.util.concurrent.FutureCallback-java.util.concurrent.Executor-
directExecutor()https://guava.dev/releases/28.1-jre/api/docs/com/google/common/util/concurrent/MoreExecutors.html#directExecutor--
CompletionStagehttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/CompletionStage.html
TE.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#cached-thread-pool-no-io
TE.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#fjp-no-blocking
Dl.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#non-open-call
ListenableFuture.addListener()https://guava.dev/releases/28.1-jre/api/docs/com/google/common/util/concurrent/ListenableFuture.html#addListener-java.lang.Runnable-java.util.concurrent.Executor-
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#no-sleep-schedule
ScheduledExecutorServicehttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html
Dc.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-document
TE.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#fjp-no-blocking
unbounded clock drifthttps://patch-diff.githubusercontent.com/kachida/java-concurrency#external-interaction-schedule
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#check-await-termination
AsynchronousChannelGrouphttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/channels/AsynchronousChannelGroup.html
io.grpc.ManagedChannelhttps://grpc.github.io/grpc-java/javadoc/io/grpc/ManagedChannel.html
gRPC-Javahttps://github.com/grpc/grpc-java
Structural search inspectionhttps://www.jetbrains.com/help/phpstorm/general-structural-search-inspection.html
not checking the result of CountDownLatch.await()https://patch-diff.githubusercontent.com/kachida/java-concurrency#check-await
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#executor-service-type-loss
explicit shutdown of ExecutorService objectshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#explicit-shutdown
Structural Search inspectionhttps://www.jetbrains.com/help/phpstorm/general-structural-search-inspection.html
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-scheduled-executor-service
ScheduledThreadPoolExecutorhttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/ScheduledThreadPoolExecutor.html
previous itemhttps://patch-diff.githubusercontent.com/kachida/java-concurrency#executor-service-type-loss
https://patch-diff.githubusercontent.com/kachida/java-concurrency#parallel-streams
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#justify-parallel-stream-use
100 microsecondshttp://gee.cs.oswego.edu/dl/html/StreamParallelGuidance.html
TE.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#fjp-no-blocking
https://patch-diff.githubusercontent.com/kachida/java-concurrency#futures
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-future
ETS.3https://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-thread-safety
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#future-method-no-blocking
may not need to return a Futurehttps://patch-diff.githubusercontent.com/kachida/java-concurrency#unneeded-future
multiple failure pathshttps://patch-diff.githubusercontent.com/kachida/java-concurrency#future-method-failure-paths
Flow.Publisherhttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/Flow.Publisher.html
org.reactivestreams.Publisherhttps://www.reactive-streams.org/reactive-streams-1.0.3-javadoc/org/reactivestreams/Publisher.html
Observablehttp://reactivex.io/RxJava/javadoc/io/reactivex/Observable.html
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#future-method-failure-paths
the previous itemhttps://patch-diff.githubusercontent.com/kachida/java-concurrency#future-method-no-blocking
https://patch-diff.githubusercontent.com/kachida/java-concurrency#thread-interruption-and-future-cancellation
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#restore-interruption
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#interruption-swallowing
examplehttp://jcip.net/listings/NoncancelableTask.java
Uninterruptibleshttps://google.github.io/guava/releases/27.0.1-jre/api/docs/com/google/common/util/concurrent/Uninterruptibles.html
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#cancel-future
canceledhttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/Future.html#cancel(boolean)
https://patch-diff.githubusercontent.com/kachida/java-concurrency#time
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#nano-time-overflow
the documentationhttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/System.html#nanoTime()
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#time-going-backward
JDK-8184271https://bugs.openjdk.java.net/browse/JDK-8184271
leap secondhttps://en.wikipedia.org/wiki/Leap_second
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#time-units
TimeUnithttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/TimeUnit.html
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#treat-negative-timeout-as-zero
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#external-interaction-schedule
nanoTime() can drift against the system time and the UTC time.https://medium.com/@leventov/cronscheduler-a-reliable-java-scheduler-for-external-interactions-cb7ce4a4f2cd
CronSchedulerhttps://github.com/TimeAndSpaceIO/CronScheduler
choosing between ScheduledThreadPoolExecutor and CronSchedulerhttps://medium.com/@leventov/cronscheduler-a-reliable-java-scheduler-for-external-interactions-cb7ce4a4f2cd#4926
Android-specific APIshttps://android.jlelse.eu/schedule-tasks-and-jobs-intelligently-in-android-e0b0d9201777
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#user-interaction-schedule
neither ScheduledThreadPoolExecutor nor Timer account for machine suspensionhttps://medium.com/@leventov/cronscheduler-a-reliable-java-scheduler-for-external-interactions-cb7ce4a4f2cd#dcfe
Android-specific APIshttps://android.jlelse.eu/schedule-tasks-and-jobs-intelligently-in-android-e0b0d9201777
CronSchedulerhttps://github.com/TimeAndSpaceIO/CronScheduler
https://patch-diff.githubusercontent.com/kachida/java-concurrency#threadlocal
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#tl-static-final
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#threadlocal-design
TL.1https://patch-diff.githubusercontent.com/kachida/java-concurrency#tl-static-final
TL.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#tl-instance-chm
Dc.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#threading-flow-model
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#threadlocal-performance
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#tl-instance-chm
Dc.2https://patch-diff.githubusercontent.com/kachida/java-concurrency/blob/master/threading-flow-model
Dn.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#use-patterns
https://patch-diff.githubusercontent.com/kachida/java-concurrency#thread-safety-of-cleaners-and-native-code
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#thread-safe-close-with-cleaner
JLS 12.6.2https://docs.oracle.com/javase/specs/jls/se11/html/jls-12.html#jls-12.6.2
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#reachability-fence
CN.4https://patch-diff.githubusercontent.com/kachida/java-concurrency#thread-safe-native
any method with an empty body is an effective emulation of reachabilityFence()http://mail.openjdk.java.net/pipermail/core-libs-dev/2018-February/051312.html
Reference.reachabilityFence()https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/ref/Reference.html#reachabilityFence(java.lang.Object)
this discussionhttp://cs.oswego.edu/pipermail/concurrency-interest/2015-December/014609.html
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#finalize-misuse
async-profilerhttps://github.com/jvm-profiling-tools/async-profiler
async-profiler -e mallochttps://stackoverflow.com/questions/53576163/interpreting-jemaloc-data-possible-off-heap-leak/53598622#53598622
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#thread-safe-native
CN.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#reachability-fence
java.util.zip.Deflaterhttp://hg.openjdk.java.net/jdk/jdk/file/a772e65727c5/src/java.base/share/classes/java/util/zip/Deflater.java
VarHandle.storeStoreFence()https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/invoke/VarHandle.html#storeStoreFence()
#https://patch-diff.githubusercontent.com/kachida/java-concurrency#forbid-jdk-internally-synchronized
forbidden-apishttps://github.com/policeman-tools/forbidden-apis
T.2https://patch-diff.githubusercontent.com/kachida/java-concurrency#concurrent-test-random
https://patch-diff.githubusercontent.com/kachida/java-concurrency#reading-list
Memory Modelhttps://docs.oracle.com/javase/specs/jls/se11/html/jls-17.html#jls-17.4
final field semanticshttps://docs.oracle.com/javase/specs/jls/se11/html/jls-17.html#jls-17.5
Safe Publication and Safe Initialization in Javahttps://shipilev.net/blog/2014/safe-public-construction/
Java Memory Model Pragmaticshttps://shipilev.net/blog/2014/jmm-pragmatics/
Close Encounters of The Java Memory Model Kindhttps://shipilev.net/blog/2016/close-encounters-of-jmm-kind/
When to use parallel streamshttp://gee.cs.oswego.edu/dl/html/StreamParallelGuidance.html
SEI CERT Oracle Coding Standard for Javahttps://wiki.sei.cmu.edu/confluence/display/java/SEI+CERT+Oracle+Coding+Standard+for+Java
Rule 08. Visibility and Atomicity (VNA)https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88487824
Rule 09. Locking (LCK)https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88487666
Rec. 18. Concurrency (CON)https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88487352
https://patch-diff.githubusercontent.com/kachida/java-concurrency#concurrency-checklists-for-other-programming-langugages
Concurrency and parallelismhttp://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cp-concurrency-and-parallelism
Concurrencyhttps://golang.org/doc/effective_go.html#concurrency
https://patch-diff.githubusercontent.com/kachida/java-concurrency#authors
post on Mediumhttps://medium.com/@leventov/code-review-checklist-java-concurrency-49398c326154
Roman Leventovhttps://github.com/leventov
Marko Topolnikhttps://stackoverflow.com/users/1103872/marko-topolnik
Matko Medenjakhttps://github.com/mmedenjak
Chris Vesthttps://github.com/chrisvest
Simon Willnauerhttps://github.com/s1monw
Ben Maneshttps://github.com/ben-manes
Gleb Smirnovhttps://github.com/gvsmirnov
Andrey Satarinhttps://github.com/asatarin
Benedict Jinhttps://github.com/asdf2014
Petr Janečekhttps://stackoverflow.com/users/1273080/petr-jane%C4%8Dek
Java Concurrency Gotchashttps://www.slideshare.net/alexmiller/java-concurrency-gotchas-3666977
Alex Millerhttps://github.com/puredanger
What is the most frequent concurrency issue you've encountered in Java?https://stackoverflow.com/questions/461896
https://patch-diff.githubusercontent.com/kachida/java-concurrency#no-copyright
Readme https://patch-diff.githubusercontent.com/kachida/java-concurrency#readme-ov-file
Please reload this pagehttps://patch-diff.githubusercontent.com/kachida/java-concurrency
Activityhttps://patch-diff.githubusercontent.com/kachida/java-concurrency/activity
0 starshttps://patch-diff.githubusercontent.com/kachida/java-concurrency/stargazers
0 watchinghttps://patch-diff.githubusercontent.com/kachida/java-concurrency/watchers
0 forkshttps://patch-diff.githubusercontent.com/kachida/java-concurrency/forks
Report repository https://patch-diff.githubusercontent.com/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Fkachida%2Fjava-concurrency&report=kachida+%28user%29
Releaseshttps://patch-diff.githubusercontent.com/kachida/java-concurrency/releases
Packages 0https://patch-diff.githubusercontent.com/users/kachida/packages?repo_name=java-concurrency
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.