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. python_如何让类支持比较运算?

    案例: 有时我们希望自定义的类,实例间可以使用比较运算符进行比较,我们自定义比较的行为. 需求: 有一个矩形的类,我们希望比较两个矩形的实例时,比较的是他们的面积 如何解决这个问题? 在类中重新定义比 ...

  2. 链表法解决hash冲突

    /* @链表法解决hash冲突 * 大单元数组,小单元链表 */ #pragma once #include <string> using namespace std; template& ...

  3. Switch-case 内定义变量的问题

    Switch-case 内定义变量的问题 这个问题需要分开讨论,C 语言和 C++ 的标准定义是不同的. C++ int Caset(int a) { switch (a) { case 1: int ...

  4. 数据流(任务并行库 TPL)

    TPL 数据流库向具有高吞吐量和低滞后时间的占用大量 CPU 和 I/O 操作的应用程序的并行化和消息传递提供了基础. 它还能显式控制缓存数据的方式以及在系统中移动的方式. 为了更好地了解数据流编程模 ...

  5. JAVA中pdf转图片的方法

    JAVA中实现pdf转图片可以通过第三方提供的架包,这里介绍几种常用的,可以根据自身需求选择使用. 一.icepdf.有收费版和开源版,几种方法里最推荐的.转换的效果比较好,能识别我手头文件中的中文, ...

  6. Java并发系列[2]----AbstractQueuedSynchronizer源码分析之独占模式

    在上一篇<Java并发系列[1]----AbstractQueuedSynchronizer源码分析之概要分析>中我们介绍了AbstractQueuedSynchronizer基本的一些概 ...

  7. C# Linq基本常用用法

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

  8. Shell 批量复制文件名相近的文件到指定文件名中

    问题: 目录结构如下: test/ 2001.01.01/   2001.02.02/   2001.03.02/ 2001.01.03/    2001.02.04/   2001.03.05/ 2 ...

  9. AutoDesk Forge 获取令牌认证

    创建应用程序 在开始使用Forge Platform之前,您需要设置一个应用程序并获取您的客户端ID和密码. 步骤1:登录Dev Portal 去开发门户网站:https://developer.au ...

  10. Spring源码情操陶冶-AnnotationConfigBeanDefinitionParser注解配置解析器

    本文承接前文Spring源码情操陶冶-自定义节点的解析,分析spring中的context:annotation-config节点如何被解析 源码概览 对BeanDefinitionParser接口的 ...