Package kilim.test

Source Code of kilim.test.TestLock

package kilim.test;

import junit.framework.TestCase;
import kilim.ExitMsg;
import kilim.Mailbox;
import kilim.Pausable;
import kilim.ReentrantLock;
import kilim.Scheduler;
import kilim.Task;

public class TestLock extends TestCase{
    public void testLocks() {
        Scheduler scheduler = new Scheduler(4);
        Mailbox<ExitMsg> mb = new Mailbox<ExitMsg>();
        for (int i = 0; i < 100; i++) {
            Task t = new LockTask();
            t.informOnExit(mb);
            t.setScheduler(scheduler);
            t.start();
        }
        boolean ok = true;
        for (int i = 0; i < 100; i++) {
            ExitMsg em = mb.getb(5000);
            assertNotNull("Timed out. #tasks finished = " + i + "/100", em);
            if (em.result instanceof Exception) {
                ok = false; break;
            }
        }
        scheduler.shutdown();
        assertTrue(ok);
    }
   
    static class LockTask extends Task {
        ReentrantLock syncLock = new ReentrantLock();
        @Override
        public void execute() throws Pausable, Exception {
//            System.out.println("Start #" + id);
            try {
            for (int i = 0; i < 1000; i++) {
                syncLock.lock();
                Task.yield();
                syncLock.unlock();
            }
            } catch (Exception e) {
                e.printStackTrace();
            }
//            System.out.println("Done #" + id);
        }
    }
}
TOP

Related Classes of kilim.test.TestLock

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.