Hi,

Wicket's request cycle is not affected by custom threads in any way.
There must be a problem in your application code if this is not the case.

Please read http://wicketinaction.com/2014/07/working-with-background-jobs/
for some solutions how to deal with long running background jobs.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Sat, May 28, 2016 at 6:01 AM, Jered Myers <jeredamy...@gmail.com> wrote:

> I discovered that deeper in my code there was a synchonization problem
> where both the large process and the main process were fighting over the
> same resource. This is why the two processes seemed to be splitting time.
> Removing the synchronization problem allowed both processes to run in
> parallel and the main process to finish on time. I am still curious if
> there is a way to allow the request cycle to finish before starting the
> large process. I messed around with thread priorities, but is didn’t seem
> to matter.
>
> On 2016-05-27 16:39, Jered Myers <j...@maplewoodsoftware.com> wrote:
> > More details:>
> > When I run my large process in a thread, the thread that is rendering
> the next page, and the large process, are getting generally equal slices of
> processing time and end at about the same time. The page I am navigating
> too also has heavy work to do in order to spin up data I need.>
> >
> > On 2016-05-27 12:51, Jered Myers <j....@maplewoodsoftware.com> wrote: >
> > > I have a large background process that I need to execute when a user
> submits a form. The background process can run while the user continues to
> use the application. I am having trouble allowing the user to continue
> working. How do I run this background process and allow the form submit to
> finish and let the user move on. I have tried using Threads and Futures.
> Here is example of a login page type of submit:> >
> > > >
> > > protected void onSubmit() > >
> > > {> >
> > >     if (!authenticateUser(user)) > >
> > >     {> >
> > >     error(%u201CInvalid username or password%u201D);> >
> > >     return;> >
> > >     }> >
> > >     > >
> > >     if (user.requiresLargeProcess()) > >
> > >     {> >
> > >     Thread largeProcess = new Thread(new LargeProcessRunnable());> >
> > >     largeProcess.start();> >
> > >     }> >
> > > >
> > >     continueToOriginalDestination();> >
> > >     setResponsePage(Application.get().getHomePage());> >
> > > }> >
> > > >
> > > This example is simplified for clarity. In reality, the process is in
> a class that does not have access to Wicket code. This means I cannot do
> tricks like use an AbstractDefaultAjaxBehavior to make the call later. Can
> somebody please point me in the right direction? I think I am needing to
> spawn a thread that runs outside of the Wicket RequestCycle, but I am not
> sure that is the correct terminology.> >
> > > >
> > > Thanks for any help,> >
> > > Jered>  >
> >
> >
> >
> > --------------------------------------------------------------------->
> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org>
> > For additional commands, e-mail: users-h...@wicket.apache.org>
> >
> >
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

Reply via email to