[
https://issues.apache.org/jira/browse/CODEC-55?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Will Pugh updated CODEC-55:
---------------------------
I have no problem changing the name "createThreadSafeCodec" to whatever you
want. I thought codec was safe, since that is in the package name and the
project name. The fact that RefinedSoudex is not a decoder is not important
enough to have a separate package (org.apache.commons.encoders???), so I
figured it was not important enough to stray from consistency.
The problem this is looking to solve is to merge "documentation" of thread
safety with the ability of getting thread safe objects. Having to have
multiple instances of encoder/decoders for different property combinations is
an orthogonal issue to thread safety. This fix just protects the user from
breaking their own thread safety by changing encoding parameters while other
threads are using them. Doing so is just not thread safe (at least not in a
way we can reasonably protect against in codec).
1) You cannot simply use synchronization, for the obvious reasons that two
threads can override their own setting variables (and that it would be
unnecessarily slow)
2) Using ThreadLocal storage for each parameter will cause strange problems in
any case where a codec is handed across threads. This can happen
a) If someone creates a singleton for everyone to use (in the common case
where an app is only using one encoding/combination of properties)
b) If someone is creating a map to manage their own codecs (in the case
that they are worried about this, and have built their own maps (I think this
is definately a possibility for existing code))
c) In an app where there are many worker queues
If you have have a case where you have actively many combinations, I think the
best solution to use thread local storage for each codec/encoder/decoder
itself, and then don't use thread safe ones. This way, you have less TLS
lookups. In actuality, simply allocating/deallocating in these cases is
probably fast enough as well
> make all "business" method implementations of public API thread safe
> ---------------------------------------------------------------------
>
> Key: CODEC-55
> URL: https://issues.apache.org/jira/browse/CODEC-55
> Project: Commons Codec
> Issue Type: Wish
> Reporter: Qingtian Wang
> Attachments: concurrentCodecs.diff, concurrentQDiff.diff,
> urlcodec.patch
>
>
> Maybe most of the implementations are already thread safe. Just such that
> codec can say so in general...
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.