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
core java的更多相关文章
- applet示例 WelcomeApplet.java <Core Java>
import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Font; import java.awt.Grap ...
- 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 ...
- Core Java Volume I — 4.7. Packages
4.7. PackagesJava allows you to group classes in a collection called a package. Packages are conveni ...
- Core Java Interview Question Answer
This is a new series of sharing core Java interview question and answer on Finance domain and mostly ...
- Core Java 学习笔记——1.术语/环境配置/Eclipse汉化字体快捷键/API文档
今天起开始学习Java,学习用书为Core Java.之前有过C的经验.准备把自己学习这一本书时的各种想法,不易理解的,重要的都记录下来.希望以后回顾起来能温故知新吧.也希望自己能够坚持把自己学习这本 ...
- Core Java读书笔记之String
Java里面的String Conceptually, Java Strings are sequences of Unicode characters. Java里面的String都是Unicode ...
- 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. ...
- 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 ...
- Core Java (十一) Java 继承,类,超类和子类
Core Java (十一) Java 继承,类,超类和子类 标签: javaJavaJAVA 2013-01-22 17:08 1274人阅读 评论(0) 收藏 举报 分类: java(58) 读 ...
- Core Java的那点事儿之ArrayList
Core Java的那点事儿之ArrayList 万丈高楼平地起,Java基础要拿起.今天就从我看的Core Java里找了些小基础点来分享一下. 首先隆重介绍一下专业级龙套演员---Employee ...
随机推荐
- mysql 多列索引的生效规则
mysql中 myisam,innodb默认使用的是 Btree索引,至于btree的数据结构是怎样的都不重要,只需要知道结果,既然是索引那这个数据结构最后是排好序:就像新华字典他的目录就是按照a,b ...
- python3 第二十二章 - 函数式编程之Decorator(装饰器)
前面我们说了,在python中,一切皆对象.函数也是一个对象,而且函数对象可以被赋值给变量,通过变量也能调用该函数.如: def sayHello(name): print(name + ' hell ...
- git log 查看指定文件的提交记录
使用git log除了可以看整个仓库的提交记录外,还可以指定某个文件的提交记录. 1. 查看指定文件的历史提交记录 命令: git log -- <file> 说明:只需要指定文件名称. ...
- Go_Hello word
与Go相关直接命令有哪些? go get 获取远程包 go run 直接运行程序 go bulid 测试编译 go fmt 格式化代码 go install 编译包文件 ...
- python_19_异常处理
什么是异常处理? -- 对于用户输入,不想让用户看见出错信息,对异常进行处理 异常处理的框架是什么? try: 可能出错的程序1 可能出错的程序2 #程序1出错了,不在执行程序2 exc ...
- jdk源码->集合->HashSet
类的属性 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, ...
- git clone代码时候出现的报错
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Andale Mono"; color: #28fe14; backgr ...
- Jquery实现选项卡效果
<script type="text/javascript"> $(document).ready(function(){ $('.ct:gt(0)').hide(); ...
- Git的基本原理与常用命令[二]
标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 git 的四个区域 四种状态 常用命令 git add #加入暂存(索引区) git ...
- 初识DIV+CSS
div元素是用来为html文档内大声(block-level)的内容提供结构和背景的元素. css是Cascading Style Sheets(层叠样式表单)的缩写,是一种用来表现html或xml等 ...