diff options
author | apbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-07-11 00:47:37 +0000 |
---|---|---|
committer | apbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-07-11 00:47:37 +0000 |
commit | 8be2ba640cad8c4e2e8adc07f39ced4c23d341ce (patch) | |
tree | 7e25cf9cc0816f594312d12433b210413d1349e9 /libjava/testsuite | |
parent | 7703a7deab2da43ee744891c37f00d7369d3b268 (diff) | |
download | gcc-8be2ba640cad8c4e2e8adc07f39ced4c23d341ce.tar.gz |
libjava:
2001-07-10 Alexandre Petit-Bianco <apbianco@redhat.com>
* Makefile.am: Added `java/lang/ThreadLocal.java'.
* Makefile.in: Regenerate.
* java/lang/ThreadLocal.java: Initial import.
libjava/testsuite:
2001-07-10 Alexandre Petit-Bianco <apbianco@readhat.com>
* libjava.lang/TLtest.java: New file.
* libjava.lang/TLtest.out: New file.
(http://gcc.gnu.org/ml/java-patches/2001-q3/msg00042.html )
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43915 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/testsuite')
-rw-r--r-- | libjava/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | libjava/testsuite/libjava.lang/TLtest.java | 60 | ||||
-rw-r--r-- | libjava/testsuite/libjava.lang/TLtest.out | 2 |
3 files changed, 67 insertions, 0 deletions
diff --git a/libjava/testsuite/ChangeLog b/libjava/testsuite/ChangeLog index cc7acc8506e..5ab3a0f14a6 100644 --- a/libjava/testsuite/ChangeLog +++ b/libjava/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2001-07-10 Alexandre Petit-Bianco <apbianco@readhat.com> + + * libjava.lang/TLtest.java: New file. + * libjava.lang/TLtest.out: New file. + 2001-07-06 Andrew Haley <aph@cambridge.redhat.com> * libjava.lang/Divide_1.java: Add many more test cases. diff --git a/libjava/testsuite/libjava.lang/TLtest.java b/libjava/testsuite/libjava.lang/TLtest.java new file mode 100644 index 00000000000..b7f4115b23f --- /dev/null +++ b/libjava/testsuite/libjava.lang/TLtest.java @@ -0,0 +1,60 @@ +class TLtest extends Thread { + + public static void main (String [] args) { + Data d = new Data (); + new ThreadTest (d, "A").start (); + new ThreadTest (d, "B").start (); + } +} + +class Data { + + private static ThreadLocal owner = new ThreadLocal () { + public Object initialValue () { return ("0"); } + }; + /* A thread will call `set' to set a value it wants an instance + of Data to associate with it and only it. */ + synchronized public void set (String v){owner.set (v);} + /* A thread will call `get' to get a value it wants an instance + of Data to associate with it and only it. */ + synchronized public String get (){return (String)owner.get();} +} + +class ThreadTest extends Thread { + + public Data d; + + ThreadTest (Data d, String name) { + super (name); + this.d = d; + } + + public void run () { + + int value = 0; + int ref = 0; + + for (int i = 0; i < 20; i++) { + + int rand = (int)(Math.random ()*20); + + /* Read `value', ref is kept for comparison */ + value = Integer.parseInt (d.get()); + + /* change `value' and ref by a random number, store `value'. */ + value += rand; ref += rand; + d.set (Integer.toString (value)); + + try { + sleep((int)(Math.random() * 500)); + } catch (InterruptedException e) {} + } + + /* If a thread didn't have private value to attach to the + instance of Data, results wouldn't be the same */ + if (ref == value) + System.out.println ("test OK."); + else + System.out.println ("test failed."); + } +} diff --git a/libjava/testsuite/libjava.lang/TLtest.out b/libjava/testsuite/libjava.lang/TLtest.out new file mode 100644 index 00000000000..951592b6678 --- /dev/null +++ b/libjava/testsuite/libjava.lang/TLtest.out @@ -0,0 +1,2 @@ +test OK. +test OK. |