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. Android studio登录界面

    打开Android studio,你需要建立两个类LoginMainAcitivity.java和SuccessMainActivity.java,和与之相对应的xml布局文件login_main.x ...

  2. python_将多个小字符拼接成大字符?

    案例: 下面有一个列表,如何把这个列表拼接成一个字符串? l = [1, 2, 3, 4, 'a', 'b', 'c'] 有哪些方法? 方法1: for进行迭代拼接 #!/usr/bin/python ...

  3. Linux指令--watch,at

    watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...

  4. 流API--流的收集

    前面的一系列博客中,我们都是从一个集合中拿到一个流,但是有时候需要执行反操作,就是从流中获得集合.实际编码中,当我们处理完流后,我们通常想查看下结果,而不是将他们聚合成一个值.我们可以调用iterat ...

  5. 【转】GLONASS全球卫星导航系统

    GLONASS是“GLOBAL NAVIGATION SATELLITE SYSTE(全球卫星导航系统)”的缩写,作用类似于美国的GPS.欧洲的伽利略卫星定位系统.最早开发于苏联时期,后由俄罗斯继续该 ...

  6. ATS日志说明

    在ATS日志中我们经常遇到形形色色的缓存结果码,为了更清晰地认识它们,相关资料整理到这里: TCP_HIT 请求对象的一份合法拷贝被缓存,ATS将发送该对象给client TCP_MISS 请求对象未 ...

  7. mybatis支持oracle批量插入

    问题:mysql使用mybatis批量插入时,通过foreach标签,将每条记录按照逗号","连接即可. 但是,oracle不支持. oracle支持如下写法: <inser ...

  8. 小白入门Docker基础篇

    docker是什么 百科上的解释是这样的: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化 ...

  9. Windows实用命令

     Windows实用命令   # 统计ESTABLISHED状态下的连接一共有多少个/c是统计行数,/i是忽略大小写 netstat -ano|find /i "established&qu ...

  10. Spring-shiro源码陶冶-DefaultFilter

    阅读源码有助于陶冶情操,本文旨在简单的分析shiro在Spring中的使用 简单介绍 Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能 Apache Shiro自带的 ...