As long as you have the default pool-size set to 1, there should be no
issues what-so-ever.

On Jun 27, 8:00 am, joshv <jvanderb...@gmail.com> wrote:
> Interesting issue.  I can see the need to make this configurable
> though.  In some cases it would be nice to make sure that these
> background tasks do not run concurrently as concurrency issues can
> result.
>
> For example, I might have a URL fetch tied to a user interface
> button.  When the URL returns, I update an internal model with new
> data.  If the fetch is slow to load, the user will keep mashing the
> button, resulting in multiple requests.  It would be nice to have
> those requests single threaded, rather than having to worry about 5
> requests returning asychronously, and having to synchronize my model
> update code.
>
> Also, as it appears that the default is currently single threading,  a
> change to make the pool larger could break any apps that depend on the
> single threading behavior.
>
> On Jun 26, 12:24 pm, Romain Guy <romain...@google.com> wrote:
>
>
>
> > Hi,
>
> > It's a bug and your workaround is correct. I'll fix this right away.
>
> > On Fri, Jun 26, 2009 at 9:27 AM, Jayesh Salvi<jayeshsa...@gmail.com> wrote:
> > > Hi,
>
> > > I am replacing the multithreaded code in my app with the AsyncTask from 
> > > 1.5.
> > > I found that two AsyncTasks do not work concurrently. I investigated a bit
> > > and found a workaround; I would like second opinion if my solution is 
> > > right.
> > > OR if there is a better solution.
>
> > > AsyncTask allows the app to do a task on a thread other than the UI 
> > > thread.
> > > But IIUC, it only provides a single thread on which a queue of tasks is
> > > performed. Therefore, if one of the task is to wait on some event (n/w or
> > > sleep) then all other tasks will wait for it to finish.
>
> > > To elaborate with the coding example:
> > > <code>
>
> > > public class MyTask extends AsyncTask<...>
> > > { ... }
>
> > > // On the UI thread execute two tasks
> > > MyTask mt1 = new MyTask().execute(args);
>
> > > MyTask mt2 = new MyTask().execute(args);
>
> > > </code>
>
> > > In the above code both the execute calls will return immediately and free 
> > > up
> > > the UI thread; however mt1 will be executed first and mt2 will have to 
> > > wait
> > > until mt1 finishes.
>
> > > Thanks to the android's open source, we can see implementation of 
> > > AsyncTask.
> > >http://google.com/codesearch/p?hl=en&sa=N&cd=2&ct=rc#uX1GffpyOZk/core...
>
> > > I copied AsyncTask.java as UserTask.java in my project and changed the 
> > > value
> > > of CORE_POOL_SIZE to 5. This makes the thread pool to use 5 threads to
> > > multiplex the queued AsyncTasks. This indeed solved my problem. Now if mt1
> > > blocks on a sleep; mt2 goes ahead and finishes its job.
>
> > > Here are some questions for those who know more about AsyncTask
> > > implementation:
>
> > > Is this work-around right?
> > > If yes, can the CORE_POOL_SIZE be made configurable in future, via an API
> > > call?
> > > Is there a solution by which multiple thread pools can be used?
>
> > > Let me add that, I am aware that this is a phone and not a web server - I 
> > > am
> > > not using 10s of threads to do network I/O. However a single thread is not
> > > sufficient for my app either.
>
> > > Please let me know. Thanks in advance.
>
> > > Jayesh
>
> > --
> > Romain Guy
> > Android framework engineer
> > romain...@android.com
>
> > Note: please don't send private questions to me, as I don't have time
> > to provide private support.  All such questions should be posted on
> > public forums, where I and others can see and answer them- Hide quoted text 
> > -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to