# 2 PApplets synchronization

**URL:** <https://discourse.processing.org/t/2-papplets-synchronization/41623>\
**Category:** Coding Questions\
**Created:** [April 5, 2023, 8:52am UTC](https://discourse.processing.org/t/2-papplets-synchronization/41623 "2023-04-05T08:52:01Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![gerome](https://avatars.discourse-cdn.com/v4/letter/g/85e7bf/32.png) [@gerome](https://discourse.processing.org/u/gerome)\
**Post date:** [April 5, 2023, 8:52am UTC](https://discourse.processing.org/t/2-papplets-synchronization/41623/1 "2023-04-05T08:52:01Z")

</div>

In my Java programme (running on Win10) I have several PApplets created with runSketch(). Sometimes an error occurs (see below). I suspect it is caused by one thread being called before some precomputations in another thread have finished. How can I make one PApplet wait for another to finish precomputations? Is it possible with wait() notifyAll().

> java.lang.NullPointerException  
> at processing.opengl.PShapeOpenGL.updatePolyIndexCache(PShapeOpenGL.java:3638)  
> at processing.opengl.PShapeOpenGL.aggregateImpl(PShapeOpenGL.java:3608)  
> at processing.opengl.PShapeOpenGL.aggregateImpl(PShapeOpenGL.java:3596)  
> at processing.opengl.PShapeOpenGL.aggregate(PShapeOpenGL.java:3556)  
> at processing.opengl.PShapeOpenGL.updateTessellation(PShapeOpenGL.java:2766)  
> at processing.opengl.PShapeOpenGL.draw(PShapeOpenGL.java:4678)  
> at processing.core.PGraphics.shape(PGraphics.java:3996)  
> at processing.core.PApplet.shape(PApplet.java:12873)  
> at StrFrame.display(StrFrame.java:148)  
> at SecondApplet.displayStrFrames(SecondApplet.java:822)  
> at SecondApplet.draw(SecondApplet.java:580)  
> at processing.core.PApplet.handleDraw(PApplet.java:2482)  
> at processing.opengl.PSurfaceJOGL$DrawListener.display(PSurfaceJOGL.java:866)  
> at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)  
> at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)  
> at jogamp.opengl.GLAutoDrawableBase$2.run(GLAutoDrawableBase.java:443)  
> at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)  
> at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)  
> at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759)  
> at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81)  
> at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:452)  
> at com.jogamp.opengl.util.FPSAnimator$MainTask.run(FPSAnimator.java:178)  
> at java.util.TimerThread.mainLoop(Timer.java:555)  
> at java.util.TimerThread.run(Timer.java:505)

---

<div class="post-metadata">

**Author:** ![josephh](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/josephh/32/210_2.png) [@josephh](https://discourse.processing.org/u/josephh)\
**Post date:** [April 6, 2023, 8:22am UTC](https://discourse.processing.org/t/2-papplets-synchronization/41623/2 "2023-04-06T08:22:30Z")

</div>

Hi @gerome,

Without any code / reproducible example, we can’t help you further! Can you try to post it? 😉

---

<div class="post-metadata">

**Author:** ![gerome](https://avatars.discourse-cdn.com/v4/letter/g/85e7bf/32.png) [@gerome](https://discourse.processing.org/u/gerome)\
**Post date:** [April 6, 2023, 11:21am UTC](https://discourse.processing.org/t/2-papplets-synchronization/41623/3 "2023-04-06T11:21:48Z")

</div>

Hi josephh, thanks for your reply. I solved my problem meanwhile using noLoop() / loop() to avoid running the second PApplet´s draw() loop until heavy precomputations are done. I called these methods from the first Applet´s setup(). Posting code is diffcult b/c the java project contains several 10K lines of code.
