Package uk.ac.uea.threadr.threadrtest

Source Code of uk.ac.uea.threadr.threadrtest.ComplexObjectTest

package uk.ac.uea.threadr.threadrtest;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.logging.Level;

import uk.ac.uea.threadr.AbstractReturnType;
import uk.ac.uea.threadr.ParallelTask;
import uk.ac.uea.threadr.Threadr;

public class ComplexObjectTest {

  private List<ComplexObject> objects;
 
  public ComplexObjectTest() {
    objects = new ArrayList<>();
    for (int i = 0; i < ThreadrTest.SIZE; i++) {
      objects.add(new ComplexObject());
    }
  }
 
  public List<ComplexObject> getObjects() {
    return this.objects;
  }

  private static class ComplexObject implements Comparable<ComplexObject>, ParallelTask, Serializable {
   
    private static final long serialVersionUID = -2398049924999261255L;
    private double id;
    private String title;
 
    public ComplexObject() {
     
      Random rand = new Random();
      id = rand.nextDouble();
      byte[] randomBytes = new byte[8];
      rand.nextBytes(randomBytes);
      title = new String(randomBytes);
    }
 
    @Override
    public int compareTo(ComplexObject o) {
     
      if (this.id < o.id)
        return -1;
     
      if (this.id > o.id)
        return 1;
           
      return 0;
    }
   
    @Override
    public AbstractReturnType<?> call() {
     
      ComplexReturnType result = new ComplexReturnType();
     
      Threadr.logger.fine(title);
      result.addResult(this);
     
      return result;
    }
  }
 
  private static class ComplexReturnType implements AbstractReturnType<List<ComplexObject>> {
   
    private static final long serialVersionUID = -8263232825557543479L;
    private List<ComplexObject> objects;
   
    public ComplexReturnType() {
      objects = new ArrayList<>();
    }
   
    public void addResult(ComplexObject result) {
      objects.add(result);
    }

    @Override
    public void setResult(List<ComplexObject> result) {
      objects = result;
    }

    @Override
    public List<ComplexObject> getResult() {
      return objects;
    }
  }
 
  public static void main(String[] args) {
   
    ComplexObjectTest test = new ComplexObjectTest();
    Threadr framework = new Threadr(test.objects);
    framework.enableLogging();
    framework.setOutputLevel(Level.FINE);
    framework.execute();
    Threadr.logger.info("Done");
  }
}
TOP

Related Classes of uk.ac.uea.threadr.threadrtest.ComplexObjectTest

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.