Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
97
Task/Singleton/NetRexx/singleton.netrexx
Normal file
97
Task/Singleton/NetRexx/singleton.netrexx
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
/* NetRexx */
|
||||
options replace format comments java crossref symbols binary
|
||||
|
||||
import java.util.random
|
||||
|
||||
class RCSingleton public
|
||||
|
||||
method main(args = String[]) public static
|
||||
RCSingleton.Testcase.main(args)
|
||||
return
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
class RCSingleton.Instance public
|
||||
|
||||
properties private static
|
||||
_instance = Instance()
|
||||
|
||||
properties private
|
||||
_refCount = int
|
||||
_random = Random
|
||||
|
||||
method Instance() private
|
||||
this._refCount = 0
|
||||
this._random = Random()
|
||||
return
|
||||
|
||||
method getInstance public static returns RCSingleton.Instance
|
||||
return _instance
|
||||
|
||||
method getRandom public returns Random
|
||||
return _random
|
||||
|
||||
method addRef public protect
|
||||
_refCount = _refCount + 1
|
||||
return
|
||||
|
||||
method release public protect
|
||||
if _refCount > 0 then
|
||||
_refCount = _refCount - 1
|
||||
return
|
||||
|
||||
method getRefCount public protect returns int
|
||||
return _refCount
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
class RCSingleton.Testcase public implements Runnable
|
||||
|
||||
properties private
|
||||
_instance = RCSingleton.Instance
|
||||
|
||||
method run public
|
||||
say threadInfo'|-'
|
||||
thud = Thread.currentThread
|
||||
_instance = RCSingleton.Instance.getInstance
|
||||
thud.yield
|
||||
_instance.addRef
|
||||
say threadInfo'|'_instance.getRefCount
|
||||
thud.yield
|
||||
do
|
||||
thud.sleep(_instance.getRandom.nextInt(1000))
|
||||
catch ex = InterruptedException
|
||||
ex.printStackTrace
|
||||
end
|
||||
_instance.release
|
||||
say threadInfo'|'_instance.getRefCount
|
||||
return
|
||||
|
||||
method main(args = String[]) public static
|
||||
threads = [ Thread -
|
||||
Thread(Testcase()), Thread(Testcase()), Thread(Testcase()), -
|
||||
Thread(Testcase()), Thread(Testcase()), Thread(Testcase()) ]
|
||||
say threadInfo'|-'
|
||||
mn = Testcase()
|
||||
mn._instance = RCSingleton.Instance.getInstance
|
||||
say mn.threadInfo'|'mn._instance.getRefCount
|
||||
mn._instance.addRef
|
||||
say mn.threadInfo'|'mn._instance.getRefCount
|
||||
do
|
||||
loop tr over threads
|
||||
(Thread tr).start
|
||||
end tr
|
||||
Thread.sleep(400)
|
||||
catch ex = InterruptedException
|
||||
ex.printStackTrace
|
||||
end
|
||||
mn._instance.release
|
||||
say mn.threadInfo'|'mn._instance.getRefCount
|
||||
return
|
||||
|
||||
method threadInfo public static returns String
|
||||
trd = Thread.currentThread
|
||||
tid = trd.getId
|
||||
hc = trd.hashCode
|
||||
info = Rexx(trd.getName).left(16, '_')':' -
|
||||
|| Rexx(Long.toString(tid)).right(10, 0)':' -
|
||||
|| '@'Rexx(Integer.toHexString(hc)).right(8, 0)
|
||||
return info
|
||||
Loading…
Add table
Add a link
Reference in a new issue