Thursday, March 31, 2016

Java First Braindump


annotation and reflection

@Retention(RetentionPolicy.RUNTIME)
public @interface DataContract {
  String testToCall();
}

@DataContract(testToCall="Test")
public enum Cat {
Red("r"),
Blue("B"),
Yellow("Y"); 
public void Test(int id){System.out.println("test called "+id);}
}
main(String[] args) {
  Cat c3= Cat.Red;  
  DataContract a= c3.getClass().getAnnotation(DataContract.class);
  Method m = c3.getClass().getMethod(a.testToCall(),int.class);
  m.invoke(c3,3); }

File IO:
PrintWriter w= new PrintWriter(new FileWriter("c:\\..."));
w.println("line 1");
w.close();   
FileReader r= new FileReader("c:\\...");
BufferedReader br= new BufferedReader(r);
CapReader cr = new CapReader(br);
System.out.println(cr.readLine());
cr.close();   
Path p=Paths.get(uri);
Path p1=Paths.get(uri+"1");
Path p2=Paths.get(uri);
Files.copy(p, p1);
Files.deleteIfExists(p);
Files.move(p1, p2);
   
Collections
List<Integer> list2=Arrays.asList(1,2,3,4);
Set<Integer> s= new HashSet<Integer>();
Queue<String> q= new LinkedList<String>();
q.offer("a"); q.poll(); q.peek();
\Map<Integer,Dog<Sex>> dogMap= new HashMap<Integer,Dog<Sex>>();
dogMap.put(1, new Dog<Sex>(null));
dogMap.get(1).Get();
Cat c= Cat.Red; //enum is class and has collection
   for(Cat c1 : Cat.values()) System.out.println(c1);

Threading --by extends
Task t= new Task(); t.start();  // run()=sync start=async.
for (int i=0;i<100;i++) println("Main Thread run "+Thread.currentThread().getId());

public class Task extends Thread {
@Override public void run() {super.run();
  for (int i=0;i<100;i++) Thread.sleep(1000);
     println(Thread.currentThread().getId()+" not blocking main thread "+i);

Threading by Runnable
public class Task implements Runnable { @Override public void run(){same code}}
Task t= new Task(); Thread th= new Thread(t); th.start(); // explicit new thread

Threading by Executor
ExecutorService exec= Executors.newFixedThreadPool(3);
ExecutorService exec= Executors.newSingleThreadExecutor();
exec.submit(tRunnable);
exec.shutdown();

Synchronization at Method level

public class HW implements Runnable { static int counter=0;
public static void main(String[] args)   {
ExecutorService exec= Executors.newFixedThreadPool(100);
HW h=new HW(); for(int i=0;i<10;i++) exec.submit(h);
exec.shutdown(); }
@Override
public synchronized void  run() { counter++;
   println("Thread Sync "+Thread.currentThread().getId()+" "+counter);}

maven mvn clean compile packge JAVA_HOME MAVEN_HOME


No comments:

Post a Comment