java
super_zlliu
使犯罪者心,悦诚服!
展开
-
java判断集合是否为空
list.isEmpty() list.size()==0 list==null的区别:1. isEmpty()方法是用来判断集合中有没有元素2. size()方法是判断集合中的元素个数3. isEmpty()和size()==0意思一样,没有区别,通用。4. if(list ==null)是判断有没有这个集合在我们判断集合是否为空的时候这样写就万无一失:原创 2017-02-24 15:02:23 · 9673 阅读 · 8 评论 -
多线程——用Lock(锁)和Condition(监听器)来优化生产者消费者模式(进一步优化,解决可能产生的死锁问题)
package com.qianfeng.demo02 ;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 之前解决本方唤醒对方的问题是唤醒了线程池中全部线程。...原创 2016-08-20 16:19:04 · 672 阅读 · 1 评论 -
多线程——用Lock(锁)和Condition(监听器)来优化生产者消费者模式
package com.qianfeng.demo02;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * jdk1.5之后出现了一些接口和类。 * Lock:比原创 2016-08-20 16:15:43 · 1064 阅读 · 0 评论 -
多线程——改变线程的名字(setPriority(int)方法、toString()方法以及wait方法和sleep方法的异同点)
package com.qianfeng.demo01;/** * 改变线程的名字 * setPriority(int):设置优先级,优先级越高拿到cpu处理权的机率就越大,默认优先级是5,取值范围1-10 * toString()方法打印出来的是:名称,优先级,线程组 * 线程组:线程组就是把一组线程放到一个组里,如果想要调用10个线程,如果把他们放到一个组里,调用一组线程就可以了。原创 2016-08-20 16:04:34 · 813 阅读 · 0 评论 -
多线程——停止线程(intertupt方法setDaemon和方法的使用)
package com.qianfeng.demo01;/** * 停止线程: * 第三种方式: * 如果读不到标记怎么办? * 比如说在任务中让线程处于阻塞状态,无法执行标记,释放执行资格。 * run方法没有结束,所以线程无法停止,所以线程也没有办法退出。 * * Thread当中有一个interrupt的方法,可以使线程从阻塞状态清除,恢复到就绪状态,让线程具备执行资格。原创 2016-08-20 15:37:11 · 1390 阅读 · 0 评论 -
多线程——Join的用法解析
package com.work.wor01;/** * join: 等待该线程终止 * 当在主线程当中执行到t1.join()方法时,就认为主线程应该把执行权让给t1,直到t1执行结束,主线程才能在执行。 * * 这个方法的作用是:在运算的过程中,可以随时的临时的加入一个线程。 * * */class JoinDemo implements Runnable{ Strin原创 2016-08-20 14:51:15 · 2736 阅读 · 1 评论 -
多线程——等待唤醒机制经典实例:生产者消费者模式(优化)
package com.work.wor01;/** * 等待唤醒机制经典实例:生产者消费者模式。 * * 当使用多个生成者线程,多个消费者线程时,会出现线程不安全的现象,即使是同步了,也不管用。 * * 发生的问题: * 生产者生产的商品没有被消费,就生成了新的商品。 * * 线程不安全现象产生的原因: 1.本方唤醒了本方 2.被唤醒的本方没有判断标记。 解决结原创 2016-08-20 11:57:57 · 657 阅读 · 0 评论 -
多线程——等待-唤醒机制的优化
package com.work.wor01;/** * 等待唤醒机制的优化 * 代码的优化? * 把同步的代码的操作内容定义在资源当中,比较好,为什么? * 因为更符合面向对象的思想 * * 把类中的方法设置为由synchronized修饰符修饰,那么他的对象就是线程安全的对象。 * * 优化步骤: * 1.成员私有化 * 2.提供了set和get的方法。 * 3.把原创 2016-08-20 11:20:43 · 302 阅读 · 0 评论 -
多线程——等待唤醒机制经典实例:生产者消费者模式
package com.qianfeng.demo04;/** * 。 * *///资源class Resource{ private String name; private int count = 1; private boolean flag; //判断盘子里是否有馒头的标志位。 public synchronized void set(String name){原创 2016-08-20 11:46:33 · 929 阅读 · 0 评论 -
多线程——等待-唤醒机制
package com.work.wor01;/** * 等待唤醒机制 * 涉及到了3个方法: * 1.wait():等待,将正在执行的线程释放了其执行资格和执行权利,并且将他存储到线程池当中。 * (线程池:运行当中会出现很多正在被冻结的线程,都会存储到线程持当中,线程池其实就是容器,用来存储线程对象的, * 暂时不用的线程也要留着) * * 2.notify():唤醒,唤醒了原创 2016-08-20 10:59:52 · 1108 阅读 · 0 评论 -
多线程——简述线程间的通信
package com.work.wor01;/**线程间的通信 * 当多个线程对于同一个资源进行处理时,且处理方式相同,那么多个线程之间不需要通信。 * * 线程间的通信发生在多个线程在处理同一个资源,但是处理的动作(任务)却不相同。 * * *///资源类class Resource{ String name; String sex;}//描述输入任务的类cla原创 2016-08-20 10:36:12 · 645 阅读 · 0 评论 -
多线程——同步嵌套造成死锁问题
package com.qianfeng.demo02;/** * 同步的另外一个弊端:死锁 * * 最常见的死锁的情况: * 同步嵌套,同步中还有同步,然后两个同步用的不是一把锁。 * * 不是使用死锁,而是避免死锁。 * * 尽量避免同步嵌套的情况。 * */public class DeadLockDemo01 { public static void mai原创 2016-08-20 10:12:01 · 3794 阅读 · 0 评论 -
IO流——文件操作流之字节输出流FileOutputStream
package com.qianfeng.demo04;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;//向文件当中写入数据public class FileOutputStreamDemo {原创 2016-08-15 11:01:59 · 1047 阅读 · 0 评论 -
IO流——文件操作流之字节输入流FileInputStream
package com.io.ioDemo;/**为什么要手动的关闭IO流? * 因为程序中打开的io流不属于内存当中的资源,所以垃圾回收机制就无法回收,所以就要显示关闭io流。 * */import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java原创 2016-08-15 10:23:33 · 816 阅读 · 0 评论 -
TreeMap获取该字符串中的每个字母出现的次数
/** * 需求: "sdfgzxcvasdfxcvdf"获取该字符串中的每个字母出现的次数。 * 希望打印结果a(1)c(2).....按照字母自然顺序打印 * * 思路: 1.把字符串中每个字符遍历拿出来。 * 2.要显示字符,还要计算出字符出现的次数,字符不能重复,字符和次数之间是一个键值映射关系。 * 3.字符和次数是映射关系,所以应该使用map,有因为打印按照了字母表原创 2016-08-28 20:33:02 · 1256 阅读 · 2 评论 -
多线程——死锁产生的条件和过程分析
package com.qianfeng.demo02;/** * 出现死锁的四个必要条件: * 1.互斥条件:资源不能互相共享,各用各的。 * 2.请求与保持条件:已经得到了资源的线程,还想要申请新的资源。 * 3.非剥夺条件:已经分配的资源不能在相应的线程中强行的剥夺。 * 4.循环等待条件:系统中若干个线程组成了环路,该环路中每一个线程都在等待着相邻的线程占据的资源。 *原创 2016-08-20 10:14:04 · 3304 阅读 · 2 评论 -
多线程——停止线程(结束run方法)
package com.qianfeng.demo01;/** * 停止线程: * 1.stop():已过时,这种方法有固有的不安全性,强制停止线程,不论处于什么状态都会停止,就会导致线程的不安全。 * 2.run方法结束了,当线程中没有运行的代码时,线程就结束了,意味着任务结束,线程消失。 * * 考虑一个问题,怎么能让run方法结束呢? * 一般情况下,run方法当中都会定义循原创 2016-08-20 15:04:02 · 14486 阅读 · 0 评论 -
第十五周上机实践项目——java之银行终极版
Bank类:import java.util.*;public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ChinaBank b = new ChinaBank(20000,2.5,0.01,0.原创 2014-12-03 20:34:12 · 963 阅读 · 0 评论 -
删除同文件夹下相同的文件(HashSet和file)
package com.homework.homework01;/** * 需求: * 1.指定一个路径,删除其下面(含子文件夹中)的同名,同大小,同修改时间 * 的重复文件,只保留一个(利用集合HashSet). * */import java.io.File;import java.util.HashSet;/* * 思路: * 1.获取目录当中所有的文件,遍历,把文件的信原创 2016-08-10 19:42:46 · 1119 阅读 · 0 评论 -
java几种经典排序
package exercise; //冒泡排序 /**冒泡排序的比较过程 * 0-1 1-2 2-3 3-4 4-5 * 0-1 1-2 2-3 3-4 * 0-1 1-2 2-3 * 0-1 1-2 * 0-1 * */public class Bubble { public void bubbleArray(int[] arr){ for(int i = 0;i<ar原创 2016-08-12 16:10:35 · 397 阅读 · 0 评论 -
第十一周上机实践项目——存钱
/**程序的版权和版本声明部分:*Copyright(c)2013,烟台大学计算机学院学生*All rights reserved.*文件名称:存钱*作者:刘中林*完成日期:2014年10月3日*版本号:v0.1*对任务及求解方法的描述部分:*输入描述:*问题描述:*程序输入:*程序输出:*问题分析:*算法设计:*我的程序: * Bank原创 2014-11-04 22:51:56 · 679 阅读 · 0 评论 -
第四周上机实践项目——java之信息
/**程序的版权和版本声明部分:*Copyright(c)2013,烟台大学计算机学院学生*All rights reserved.*文件名称:java之信息*作者:刘中林*完成日期:2014年9月8日*版本号:v0.1*对任务及求解方法的描述部分:*输入描述:*问题描述:*程序输入:*程序输出:*问题分析:*算法设计:*我的程序:imp原创 2014-09-08 15:19:25 · 620 阅读 · 0 评论 -
第三周上机实践项目——java之加减乘除
/**程序的版权和版本声明部分:*Copyright(c)2013,烟台大学计算机学院学生*All rights reserved.*文件名称:java之加减乘除*作者:刘中林*完成日期:2014年9月5日*版本号:v0.1*对任务及求解方法的描述部分:*输入描述:*问题描述:*程序输入:*程序输出:*问题分析:*算法设计:*我的程序:*/import java.原创 2014-09-05 21:37:51 · 629 阅读 · 0 评论 -
第二周上机自由练习项目——java开篇(2)
/**程序的版权和版本声明部分:*Copyright(c)2013,烟台大学计算机学院学生*All rights reserved.*文件名称:大家好*作者:刘中林*完成日期:2014年9月1日*版本号:v0.1*对任务及求解方法的描述部分:*输入描述:*问题描述:*程序输入:*程序输出:*问题分析:*算法设计:*我的程序:*/p原创 2014-09-02 17:26:30 · 762 阅读 · 0 评论 -
第二周上机自由练习项目——java开篇
/**程序的版权和版本声明部分:*Copyright(c)2013,烟台大学计算机学院学生*All rights reserved.*文件名称:猪八戒*作者:刘中林*完成日期:2014年9月1日*版本号:v0.1*对任务及求解方法的描述部分:*输入描述:*问题描述:*程序输入:*程序输出:*问题分析:*算法设计:*我的程序:*/p原创 2014-09-02 17:21:57 · 863 阅读 · 0 评论 -
多线程——静态同步函数的锁的相关问题
package com.qianfeng.demo01;/** * 关于静态同步函数使用的锁 * * 静态同步函数的锁是什么呢? * 静态随着类的加载而加载,而这时内存中存储的对象至少有一个,也就是该类的字节码文件对象。 * * 这个对象的表现形式:类名.class 他表示字节码文件对象, Class类的对象 * */public class ThreadDemo03原创 2016-08-20 09:55:51 · 928 阅读 · 0 评论 -
多线程——同步函数的锁的相关问题
package com.qianfeng.demo01;/** * 探讨同步函数的锁是什么? * 通过两个线程来验证同步函数的锁是什么? * 这两个线程都在卖票,一个在同步代码块当中卖票,一个在同步函数当中卖票, * 如果两个线程用到的是同一把锁就会同步,就不会出现卖错票的情况。 * * 同步函数使用的锁是什么呢? * 函数被对象所调用,代表调用函数的对象的引用就是this。原创 2016-08-20 09:48:45 · 384 阅读 · 0 评论 -
IO流——内存流(字节数组流)之ByteArrayOutputStream
package com.io.demo02;import java.io.ByteArrayOutputStream;/** * 字节数组输出流操作和文件输出流的操作不相同。 * 因为ByteArrayOutputStream类中存在的新增的方法,toByteArray()和toString(), * 通过这两个方法可以直接把流转换数组或者字符串,所以不要使用父类的引用。 *原创 2016-08-17 19:38:01 · 1715 阅读 · 5 评论 -
IO流——内存流(字节数组流)之ByteArrayInputStream
package com.io.demo02;import java.io.ByteArrayInputStream;import java.io.IOException;/** * ByteArrayInputStream:在创建对象时传入数组即可,不需要传文件,也没有新增加的方法,close关闭无效。 * 流本身就是内存中的资源,流中的内容也是内存中的资源,所以不用手动关闭,内存会原创 2016-08-17 19:23:02 · 3831 阅读 · 0 评论 -
IO流——字节流文件的复制
package com.io.ioDemo;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.原创 2016-08-16 18:10:17 · 421 阅读 · 0 评论 -
IO流——字符文件的复制
package com.io.ioDemo;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;i原创 2016-08-16 18:09:01 · 333 阅读 · 0 评论 -
IO流——转换流之BufferedWriter
package com.io.ioDemo;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStre原创 2016-08-16 18:07:17 · 733 阅读 · 0 评论 -
IO——转换流之BufferedReader
package com.io.ioDemo;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream原创 2016-08-16 18:05:08 · 1019 阅读 · 0 评论 -
IO流——缓冲流之BufferedWriter
package com.io.ioDemo;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;public class BufferedWriterDemo { public static void main(String[]原创 2016-08-16 18:01:49 · 328 阅读 · 0 评论 -
IO流——缓冲流之BufferedReader
package com.io.ioDemo;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class BufferedReaderDem原创 2016-08-16 18:00:51 · 307 阅读 · 0 评论 -
IO流——缓冲流之BufferedOutputStream
package com.io.ioDemo;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class Buffe原创 2016-08-16 17:59:39 · 322 阅读 · 0 评论 -
IO流——缓冲流之BufferedInputStream
Buffered提供缓冲,提高效率原创 2016-08-16 17:58:15 · 458 阅读 · 0 评论 -
IO流——文件操作流之字符输出流FileWriter
package com.io.ioDemo;import java.io.File;import java.io.FileWriter;import java.io.IOException;//字符流写入文件public class FileWriterDemo { public static void main(String[] args) { //创建一个字符流对象 Fi原创 2016-08-16 17:55:14 · 2993 阅读 · 0 评论 -
IO流——数据类型处理流(DataInputStream和DataOutputStream)
package com.qianfeng.demo04;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.原创 2016-08-17 19:43:21 · 1080 阅读 · 0 评论 -
IO流——序列化处理流(ObjectInputStream和ObjectOutputStream)
package com.qianfeng.demo05;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java原创 2016-08-17 19:47:22 · 453 阅读 · 0 评论