| <?xml version="1.0"?>
|
| <!-- |
| Copyright 2002-2004 The Apache Software Foundation |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
|
|
| <!--
|
| This example shows coordinating between 2 threads using
|
| mutexes and sleep. Thread 1 should execute after thread 2.
|
| -->
|
|
|
| <jelly xmlns="jelly:core" xmlns:threads="jelly:threads">
|
|
|
| <threads:mutex var="mutex"/>
|
|
|
| <threads:thread var="thread1">
|
| <!-- give the other thread a chance to get the mutex -->
|
| <threads:sleep for="100"/>
|
|
|
| <!-- get the mutex -->
|
| <threads:synchronize mutex="${mutex}">
|
|
|
| <whitespace>
|
| [thread1]: finally I got it
|
| </whitespace>
|
|
|
| </threads:synchronize>
|
| </threads:thread>
|
|
|
| <threads:thread>
|
| <!-- get the mutex -->
|
| <threads:synchronize mutex="${mutex}">
|
|
|
| <whitespace>
|
| [thread2]: making the other thread wait for 2 secs
|
| </whitespace>
|
|
|
| <!-- make the other thread wait -->
|
| <threads:sleep for="2000"/>
|
| </threads:synchronize>
|
| </threads:thread>
|
|
|
| <whitespace>
|
| [main]: waiting for threads to finish
|
| </whitespace>
|
|
|
| <threads:join thread="${thread1}"/>
|
|
|
| <whitespace>
|
| [main]: threads are now done
|
| </whitespace>
|
|
|
| </jelly> |