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

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. Redis 2种持久化模式的缺陷

    http://blog.csdn.net/hexieshangwang/article/details/47254087 一.RDB持久化模式缺陷 1.问题描述: 并发200路,模拟不断写Redis, ...

  2. javascript之this

    全局作用域的this this == window //true this.a = 8 window.a 一般函数的this function thisTest(){ return this; } t ...

  3. 理解Object.defineProperty的作用

    对象是由多个名/值对组成的无序的集合.对象中每个属性对应任意类型的值.定义对象可以使用构造函数或字面量的形式: var obj = new Object; //obj = {} obj.name = ...

  4. Hibernate (三)

    1 一对多的单向 示例:一个已经存在的学生,新建一个班级,然后将该学生加入到该班级之下 设置inverse="false" <?xml version="1.0&q ...

  5. C# Linq基本常用用法

    1.什么是Linq? Lanaguage Interated Query(语言集成查询),Linq 是集成C# 和VB这些语言中用于提供数据查询能力的一个新特性. 这里只介绍两种基本常用用法. 学习方 ...

  6. [PHP] Phalcon操作示范

    这篇内容将对下列操作进行示范: Insert.Select.Update.Calculation.Transaction.models advanced.dev-tools.cookies [ Ins ...

  7. Effective Java 之 --- 用私有构造器或者枚举类型强化Singleton属性

    Singleton指仅仅被实例化一次的类,通常用来代表那些本质上唯一的系统组件,实现Singleton有三种方法: 1)公有静态成员是个final域,享有特权的用户可以调用AccessibleObje ...

  8. JAVA设计模式---单例模式的几种实现方式比较

    1.延迟实例化方式:(懒汉模式) public class Singleton { private static Singleton uniqueInstance; private Singleton ...

  9. js、jQuery实现2048小游戏

    2048小游戏 一.游戏简介:  2048是一款休闲益智类的数字叠加小游戏 二. 游戏玩法: 在4*4的16宫格中,您可以选择上.下.左.右四个方向进行操作,数字会按方向移动,相邻的两个数字相同就会合 ...

  10. web项目,ftl文件中的路径引入问题

    路径问题的引入方式:绝对路径.相对路径 区别如图: =================================================