ConsoleTest,这个程序如果在IDE里运行就会因无法获得控制台而报错

  1. import java.io.Console;
  2.  
  3. public class ConsoleTest {
  4.  
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. Console console=System.console();
  8. String username=console.readLine("username:");
  9. char[] pwd=console.readPassword("password:");
  10. System.out.println(username);
  11. System.out.println(pwd);
  12. }
  13.  
  14. }

ProxyTest

  1. package corejava;
  2.  
  3. import java.lang.reflect.InvocationHandler;
  4. import java.lang.reflect.Method;
  5. import java.lang.reflect.Proxy;
  6. import java.util.Arrays;
  7. import java.util.Random;
  8. class TraceHandler implements InvocationHandler{
  9. private Object target;
  10. public TraceHandler (Object t)
  11. {
  12. target=t;
  13. }
  14.  
  15. public Object invoke(Object proxy,Method m,Object[] args) throws Throwable{
  16. System.out.print(target);
  17. System.out.print("."+m.getName()+"(");
  18. if(args!=null){
  19. for(int i=0;i<args.length;i++){
  20. System.out.print(args[i]);
  21. if(i<args.length-1){
  22. System.out.println(",");
  23. }
  24. }
  25. }
  26. System.out.println(")");
  27. return m.invoke(target,args);
  28. }
  29. }
  30. public class ProxyTest {
  31.  
  32. public static void main(String[] args) {
  33. // TODO Auto-generated method stub
  34. Object[]elements=new Object[1000];
  35.  
  36. for(int i=0;i<elements.length;i++){
  37. Integer value=i+1;
  38. InvocationHandler handler=new TraceHandler(value);
  39. //null表示使用默认的类加载器
  40. Object proxy=Proxy.newProxyInstance(null, new Class[]{Comparable.class}, handler);
  41. elements[i]=proxy;
  42. }
  43.  
  44. Integer key=new Random().nextInt(elements.length)+1;
  45.  
  46. int result =Arrays.binarySearch(elements, key);
  47.  
  48. if(result>0){
  49. System.out.println(elements[result]);
  50. }
  51. }
  52. }

输出:

  1. 500.compareTo(159)
  2. 250.compareTo(159)
  3. 125.compareTo(159)
  4. 187.compareTo(159)
  5. 156.compareTo(159)
  6. 171.compareTo(159)
  7. 163.compareTo(159)
  8. 159.compareTo(159)
  9. 159.toString()
  10. 159

BlockingQueueTest阻塞队列实现同步

  1. package corejava;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.util.Scanner;
  6. import java.util.concurrent.ArrayBlockingQueue;
  7. import java.util.concurrent.BlockingQueue;
  8.  
  9. public class BlockingQueueTest {
  10.  
  11. public static void main(String[] args) {
  12. // TODO Auto-generated method stub
  13. Scanner in = new Scanner(System.in);
  14. System.out.println("Enter base direction");
  15. String directory =in.nextLine();
  16. System.out.print("Enter keyword :");
  17. String keyword = in.nextLine();
  18. final int FILE_QUEUE_SIZE=10;
  19. final int SEARCH_THREADS=100;
  20.  
  21. BlockingQueue queue=new ArrayBlockingQueue<>(FILE_QUEUE_SIZE);
  22. FileEnumerationTask enumrator=new FileEnumerationTask(queue,new File(directory));
  23. new Thread(enumrator).start();
  24. for(int i=0;i<SEARCH_THREADS;i++){
  25. new Thread(new SearchTask(queue,keyword)).start();
  26. }
  27. }
  28. }
  29. class FileEnumerationTask implements Runnable{
  30. public static File DUMMY=new File("");
  31. private BlockingQueue<File> queue;
  32. private File strartingDirectory;
  33.  
  34. public FileEnumerationTask(BlockingQueue<File> queue,File strartingDirectory){
  35. this.queue=queue;
  36. this.strartingDirectory=strartingDirectory;
  37. }
  38.  
  39. public void run(){
  40. try{
  41. enumrator(strartingDirectory);
  42. queue.put(DUMMY);
  43. }catch(Exception e){}
  44. }
  45. public void enumrator(File directory) throws InterruptedException{
  46. File[] files=directory.listFiles();
  47. for(File file:files){
  48. if(file.isDirectory()){
  49. enumrator(file);
  50. }else{
  51. queue.put(file);
  52. }
  53. }
  54. }
  55. }
  56. class SearchTask implements Runnable{
  57. private BlockingQueue<File> queue;
  58. private String keyword;
  59.  
  60. public SearchTask(BlockingQueue<File> queue,String keyword){
  61. this.queue=queue;
  62. this.keyword=keyword;
  63. }
  64. public void run(){
  65. try{
  66. boolean done=false;
  67. while(!done){
  68. File file=queue.take();
  69. if(file==FileEnumerationTask.DUMMY){
  70. queue.put(file);
  71. done=true;
  72. }else{
  73. search(file);
  74. }
  75. }
  76. }catch(IOException e){
  77. e.printStackTrace();
  78. }
  79. catch(InterruptedException e){
  80.  
  81. }
  82. }
  83. public void search(File file) throws IOException{
  84. try(Scanner in =new Scanner(file)){
  85. int lineNumber=0;
  86. while(in.hasNextLine()){
  87. lineNumber++;
  88. String line=in.nextLine();
  89. if(line.contains(keyword)){
  90. System.out.printf("%s:%d:%s%n",file.getPath(),lineNumber,line);
  91. }
  92. }
  93. }
  94. }
  95. }

ForkJoinTest

  1. package corejava;
  2.  
  3. import java.util.concurrent.ForkJoinPool;
  4. import java.util.concurrent.RecursiveTask;
  5.  
  6. public class ForkJoinTest {
  7.  
  8. public static void main(String[] args) {
  9. // TODO Auto-generated method stub
  10. final int SIZE =10000000;
  11. double[] numbers=new double[SIZE];
  12. for(int i=0;i<SIZE;i++){
  13. numbers[i]=Math.random();
  14. }
  15. Counter counter=new Counter(numbers,0,numbers.length,
  16. new Filter(){
  17. public boolean accept(double x){
  18. return x>0.5;
  19. }
  20. });
  21. ForkJoinPool pool=new ForkJoinPool();
  22. pool.invoke(counter);
  23. System.out.println(counter.join());
  24. }
  25. }
  26. interface Filter{
  27. boolean accept(double t);
  28. }
  29. class Counter extends RecursiveTask<Integer>{
  30. public static final int THRESHOLD=1000;
  31. private double[] values;
  32. private int from;
  33. private int to;
  34. private Filter filter;
  35. public Counter(double[]values,int from,int to,Filter filter){
  36. this.values=values;
  37. this.from=from;
  38. this.to=to;
  39. this.filter=filter;
  40. }
  41. protected Integer compute(){
  42. if(to-from<THRESHOLD){
  43. int count =0;
  44. for(int i=from;i<to;i++){
  45. if(filter.accept(values[i])){
  46. count++;
  47. }
  48. }
  49. return count;
  50. }else{
  51. int mid =(from+to)/2;
  52. Counter first = new Counter(values,from,mid,filter);
  53. Counter second = new Counter(values,mid,to,filter);
  54. invokeAll(first,second);
  55. return first.join()+second.join();
  56. }
  57. }
  58. }

输出:

  1. 5001345

core java的更多相关文章

  1. applet示例 WelcomeApplet.java <Core Java>

    import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Font; import java.awt.Grap ...

  2. Core Java Volume I — 1.2. The Java "White Paper" Buzzwords

    1.2. The Java "White Paper" BuzzwordsThe authors of Java have written an influential White ...

  3. Core Java Volume I — 4.7. Packages

    4.7. PackagesJava allows you to group classes in a collection called a package. Packages are conveni ...

  4. Core Java Interview Question Answer

    This is a new series of sharing core Java interview question and answer on Finance domain and mostly ...

  5. Core Java 学习笔记——1.术语/环境配置/Eclipse汉化字体快捷键/API文档

    今天起开始学习Java,学习用书为Core Java.之前有过C的经验.准备把自己学习这一本书时的各种想法,不易理解的,重要的都记录下来.希望以后回顾起来能温故知新吧.也希望自己能够坚持把自己学习这本 ...

  6. Core Java读书笔记之String

    Java里面的String Conceptually, Java Strings are sequences of Unicode characters. Java里面的String都是Unicode ...

  7. Top 25 Most Frequently Asked Interview Core Java Interview Questions And Answers

    We are sharing 25 java interview questions , these questions are frequently asked by the recruiters. ...

  8. Difference Between Arraylist And Vector : Core Java Interview Collection Question

    Difference between Vector and Arraylist is the most common  Core Java Interview question you will co ...

  9. Core Java (十一) Java 继承,类,超类和子类

    Core Java (十一) Java 继承,类,超类和子类 标签: javaJavaJAVA 2013-01-22 17:08 1274人阅读 评论(0) 收藏 举报  分类: java(58) 读 ...

  10. Core Java的那点事儿之ArrayList

    Core Java的那点事儿之ArrayList 万丈高楼平地起,Java基础要拿起.今天就从我看的Core Java里找了些小基础点来分享一下. 首先隆重介绍一下专业级龙套演员---Employee ...

随机推荐

  1. mysql 多列索引的生效规则

    mysql中 myisam,innodb默认使用的是 Btree索引,至于btree的数据结构是怎样的都不重要,只需要知道结果,既然是索引那这个数据结构最后是排好序:就像新华字典他的目录就是按照a,b ...

  2. python3 第二十二章 - 函数式编程之Decorator(装饰器)

    前面我们说了,在python中,一切皆对象.函数也是一个对象,而且函数对象可以被赋值给变量,通过变量也能调用该函数.如: def sayHello(name): print(name + ' hell ...

  3. git log 查看指定文件的提交记录

    使用git log除了可以看整个仓库的提交记录外,还可以指定某个文件的提交记录. 1. 查看指定文件的历史提交记录 命令: git log -- <file> 说明:只需要指定文件名称. ...

  4. Go_Hello word

    与Go相关直接命令有哪些? go get    获取远程包 go run    直接运行程序 go bulid  测试编译 go fmt    格式化代码 go install       编译包文件 ...

  5. python_19_异常处理

    什么是异常处理? -- 对于用户输入,不想让用户看见出错信息,对异常进行处理 异常处理的框架是什么? try: 可能出错的程序1 可能出错的程序2        #程序1出错了,不在执行程序2 exc ...

  6. jdk源码->集合->HashSet

    类的属性 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, ...

  7. git clone代码时候出现的报错

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Andale Mono"; color: #28fe14; backgr ...

  8. Jquery实现选项卡效果

    <script type="text/javascript"> $(document).ready(function(){ $('.ct:gt(0)').hide(); ...

  9. Git的基本原理与常用命令[二]

    标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 git 的四个区域 四种状态 常用命令 git add #加入暂存(索引区) git ...

  10. 初识DIV+CSS

    div元素是用来为html文档内大声(block-level)的内容提供结构和背景的元素. css是Cascading Style Sheets(层叠样式表单)的缩写,是一种用来表现html或xml等 ...