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
Thursday, March 31, 2016
Java First Braindump
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment