core java

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

import java.io.Console;

public class ConsoleTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Console console=System.console();
        String username=console.readLine("username:");
        char[] pwd=console.readPassword("password:");
        System.out.println(username);
        System.out.println(pwd);
    }

}

ProxyTest

package corejava;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Arrays;
import java.util.Random;
class TraceHandler implements InvocationHandler{
    private Object target;
    public TraceHandler (Object t)
    {
        target=t;
    }

    public Object invoke(Object proxy,Method m,Object[] args) throws Throwable{
        System.out.print(target);
        System.out.print("."+m.getName()+"(");
        if(args!=null){
            for(int i=0;i<args.length;i++){
                System.out.print(args[i]);
                if(i<args.length-1){
                    System.out.println(",");
                }
            }
        }
        System.out.println(")");
        return m.invoke(target,args);
    }
}
public class ProxyTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Object[]elements=new Object[1000];

        for(int i=0;i<elements.length;i++){
            Integer value=i+1;
            InvocationHandler handler=new TraceHandler(value);
            //null表示使用默认的类加载器
            Object proxy=Proxy.newProxyInstance(null, new Class[]{Comparable.class}, handler);
            elements[i]=proxy;
        }

        Integer key=new Random().nextInt(elements.length)+1;

        int result =Arrays.binarySearch(elements, key);

        if(result>0){
            System.out.println(elements[result]);
        }
    }
}

输出:

500.compareTo(159)
250.compareTo(159)
125.compareTo(159)
187.compareTo(159)
156.compareTo(159)
171.compareTo(159)
163.compareTo(159)
159.compareTo(159)
159.toString()
159

BlockingQueueTest阻塞队列实现同步

package corejava;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

public class BlockingQueueTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        System.out.println("Enter base direction");
        String directory =in.nextLine();
        System.out.print("Enter keyword :");
        String keyword = in.nextLine();
        final int FILE_QUEUE_SIZE=10;
        final int SEARCH_THREADS=100;

        BlockingQueue queue=new  ArrayBlockingQueue<>(FILE_QUEUE_SIZE);
        FileEnumerationTask enumrator=new FileEnumerationTask(queue,new File(directory));
        new Thread(enumrator).start();
        for(int i=0;i<SEARCH_THREADS;i++){
            new Thread(new SearchTask(queue,keyword)).start();
        }
    }
}
class FileEnumerationTask implements Runnable{
    public static File DUMMY=new File("");
    private BlockingQueue<File> queue;
    private File strartingDirectory;

    public FileEnumerationTask(BlockingQueue<File> queue,File strartingDirectory){
        this.queue=queue;
        this.strartingDirectory=strartingDirectory;
    }

    public void run(){
        try{
            enumrator(strartingDirectory);
            queue.put(DUMMY);
        }catch(Exception e){}
    }
    public void enumrator(File directory) throws InterruptedException{
        File[] files=directory.listFiles();
        for(File file:files){
            if(file.isDirectory()){
                enumrator(file);
            }else{
                queue.put(file);
            }
        }
    }
}
class SearchTask implements Runnable{
    private BlockingQueue<File> queue;
    private String keyword;

    public SearchTask(BlockingQueue<File> queue,String keyword){
        this.queue=queue;
        this.keyword=keyword;
    }
    public void run(){
        try{
            boolean done=false;
            while(!done){
                File file=queue.take();
                if(file==FileEnumerationTask.DUMMY){
                    queue.put(file);
                    done=true;
                }else{
                    search(file);
                }
            }
        }catch(IOException e){
            e.printStackTrace();
        }
        catch(InterruptedException e){

        }
    }
    public void search(File file) throws IOException{
        try(Scanner in =new Scanner(file)){
            int lineNumber=0;
            while(in.hasNextLine()){
                lineNumber++;
                String line=in.nextLine();
                if(line.contains(keyword)){
                    System.out.printf("%s:%d:%s%n",file.getPath(),lineNumber,line);
                }
            }
        }
    }
}

ForkJoinTest

package corejava;

import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveTask;

public class ForkJoinTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        final int SIZE =10000000;
        double[] numbers=new double[SIZE];
        for(int i=0;i<SIZE;i++){
            numbers[i]=Math.random();
        }
        Counter counter=new Counter(numbers,0,numbers.length,
                    new Filter(){
                        public boolean accept(double x){
                            return x>0.5;
                        }
                    });
        ForkJoinPool pool=new ForkJoinPool();
        pool.invoke(counter);
        System.out.println(counter.join());
    }
}
interface Filter{
    boolean accept(double t);
}
class Counter extends RecursiveTask<Integer>{
    public static final int THRESHOLD=1000;
    private double[] values;
    private int from;
    private int to;
    private Filter filter;
    public Counter(double[]values,int from,int to,Filter filter){
        this.values=values;
        this.from=from;
        this.to=to;
        this.filter=filter;
    }
    protected Integer compute(){
        if(to-from<THRESHOLD){
            int count =0;
            for(int i=from;i<to;i++){
                if(filter.accept(values[i])){
                    count++;
                }
            }
            return count;
        }else{
            int mid =(from+to)/2;
            Counter first = new Counter(values,from,mid,filter);
            Counter second = new Counter(values,mid,to,filter);
            invokeAll(first,second);
            return first.join()+second.join();
        }
    }
}

输出:

5001345
时间: 2024-08-07 14:06:27

core java的相关文章

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

Core Java (十一) Java 继承,类,超类和子类 标签: javaJavaJAVA 2013-01-22 17:08 1274人阅读 评论(0) 收藏 举报  分类: java(58) 读书笔记(46)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 继承关系 两个类之间存在三种关系: 依赖,uses-a,如果一个类的方法操纵另一个对象,我们就说一个类依赖于另一个类. 聚合(关联),has-a,一个对象包含另外一个对象,聚合关系意味着类A的对象包含类B的对象

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

今天起开始学习Java,学习用书为Core Java.之前有过C的经验.准备把自己学习这一本书时的各种想法,不易理解的,重要的都记录下来.希望以后回顾起来能温故知新吧.也希望自己能够坚持把自己学习这本书的整个过程记录下来. I want to put a ding in the universe. 基本术语:       Object Oriented Programming——OOP——面向对象编程 Application Programming Interface——API——应用程序编程接

Core Java 笔记

Core Java 的读书笔记,持续更新中... Core Java笔记 1.对象与类 Core Java笔记 2.继承 Core Java笔记 3.反射

Core Java的那点事儿之ArrayList

Core Java的那点事儿之ArrayList 万丈高楼平地起,Java基础要拿起.今天就从我看的Core Java里找了些小基础点来分享一下. 首先隆重介绍一下专业级龙套演员---Employee类(PS:我可是专注龙套30年),下面会有多次出场,因此先在此介绍一下: 1 class Employee{ 2 private String name; 3 private double salary; 4 private int id; 5 6 //下面是set.get方法 7 } ArrayL

java学习笔记(Core Java)1-3

要准备学习下java了,按着<core java>的内容,简单的做了一下笔记.这本书有很多地方对C++和java的语法作了对比,所以对于从C++向java方向转的人来说,非常有利! javac xxx.java java xxx java applet: appletview xxx.html (浏览器加载) 第三章 基本类型1) 对大小写敏感 强调main方法时公有的 2)java没有无符号类型3)float后面必须有F 标记,double 也可以加上D4) 错误溢出:正无穷 负无穷 NaN

java多线程之路之同步器—Core Java学习

今天为大家介绍几种java内置的同步器. CountDownLatch:倒计数门栓 CountDownLatch让一个线程集等待直到计数变为0.该Latch为一次性的,一旦计数为0,就不能再使用了. Sample 1: public class Driver { public static void main(String[] args) throws InterruptedException { CountDownLatch startSignal = new CountDownLatch(1

Top 10 tough core Java interview questions answers programming

Tough core Java interview questions and answersWhat is tough core java interview question ? Why do people look for tough Java questions before going for interview? well I don't thing I need to answer these tough questions because its pretty natural t

Core Java 谈谈 ThreadPoolExecutor

说起Java 7的Executors框架的线程池,同学们能想到有几种线程池,它们分别是什么? 一共有四个,它们分别是Executors的 newSingleThreadPool(), newCachedThreadPool(), newFixedThreadPool(),newScheduledThread(),四个静态方法,当然在java 8中还有一个newWorkStealingThreadPool(). 但今天这些这些不是咱们今天要说的重点,今天要说的重点是里边所使用的ThreadPool

java各种概念 Core Java总结

Base: OOA是什么?OOD是什么?OOP是什么?{ oo(object-oriented):基于对象概念,以对象为中心,以类和继承为构造机制,来认识,理解,刻画客观世界和设计,构建相应的软件系统的一门方法;本意----模拟人类的思维方式,使开发,维护,修改更加容易 - ooa(object-oriented analysis):强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是 对管理业务现状和方法的分析-------其实就是进一步对oo进行细化,初步得出

Core Java 1

p264~p267: 1.程序中可能出现错误:用户输入错误.设备错误.物理限制错误.代码错误 2.如果由于出现错误而使得某些操作没有完成,程序应该:返回一种安全状态,并能够让用户执行一些其他命令: 或者允许用户保存所有的操作结果,并以妥善方式终止程序. 3.异常处理的任务:将控制权从错误产生的地方转移到能够处理这种情况的错误处理器. 4.异常对象:派生于Throwable类的一个实例. 5.Error类:不需要关注 6.Exception类:其中不需要关注RuntimeException类 7.