自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u012369385的专栏

android开发工程师

  • 博客(45)
  • 收藏
  • 关注

原创 TreeMap获取该字符串中的每个字母出现的次数

/** * 需求: "sdfgzxcvasdfxcvdf"获取该字符串中的每个字母出现的次数。 * 希望打印结果a(1)c(2).....按照字母自然顺序打印 * * 思路: 1.把字符串中每个字符遍历拿出来。 * 2.要显示字符,还要计算出字符出现的次数,字符不能重复,字符和次数之间是一个键值映射关系。 * 3.字符和次数是映射关系,所以应该使用map,有因为打印按照了字母表

2016-08-28 20:33:02 1271 2

原创 练习题——Gson解析、利用JDBC连接数据库进行数据的存取及查询等的综合

/** *对数据的查询类 */package com.liuzhonglin.exercise;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.sql.Connection;import java.sql.DriverMana

2016-08-28 19:31:01 1438

原创 多线程——用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 702 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 1092

原创 多线程——改变线程的名字(setPriority(int)方法、toString()方法以及wait方法和sleep方法的异同点)

package com.qianfeng.demo01;/** * 改变线程的名字 * setPriority(int):设置优先级,优先级越高拿到cpu处理权的机率就越大,默认优先级是5,取值范围1-10 * toString()方法打印出来的是:名称,优先级,线程组 * 线程组:线程组就是把一组线程放到一个组里,如果想要调用10个线程,如果把他们放到一个组里,调用一组线程就可以了。

2016-08-20 16:04:34 842

原创 多线程——停止线程(intertupt方法setDaemon和方法的使用)

package com.qianfeng.demo01;/** * 停止线程: * 第三种方式: * 如果读不到标记怎么办? * 比如说在任务中让线程处于阻塞状态,无法执行标记,释放执行资格。 * run方法没有结束,所以线程无法停止,所以线程也没有办法退出。 * * Thread当中有一个interrupt的方法,可以使线程从阻塞状态清除,恢复到就绪状态,让线程具备执行资格。

2016-08-20 15:37:11 1419

原创 多线程——停止线程(结束run方法)

package com.qianfeng.demo01;/** * 停止线程: * 1.stop():已过时,这种方法有固有的不安全性,强制停止线程,不论处于什么状态都会停止,就会导致线程的不安全。 * 2.run方法结束了,当线程中没有运行的代码时,线程就结束了,意味着任务结束,线程消失。 * * 考虑一个问题,怎么能让run方法结束呢? * 一般情况下,run方法当中都会定义循

2016-08-20 15:04:02 14600

原创 多线程——Join的用法解析

package com.work.wor01;/** * join: 等待该线程终止 * 当在主线程当中执行到t1.join()方法时,就认为主线程应该把执行权让给t1,直到t1执行结束,主线程才能在执行。 * * 这个方法的作用是:在运算的过程中,可以随时的临时的加入一个线程。 * * */class JoinDemo implements Runnable{ Strin

2016-08-20 14:51:15 2762 1

原创 多线程——等待唤醒机制经典实例:生产者消费者模式(优化)

package com.work.wor01;/** * 等待唤醒机制经典实例:生产者消费者模式。 * * 当使用多个生成者线程,多个消费者线程时,会出现线程不安全的现象,即使是同步了,也不管用。 * * 发生的问题: * 生产者生产的商品没有被消费,就生成了新的商品。 * * 线程不安全现象产生的原因: 1.本方唤醒了本方 2.被唤醒的本方没有判断标记。 解决结

2016-08-20 11:57:57 679

原创 多线程——等待唤醒机制经典实例:生产者消费者模式

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 954

原创 多线程——等待-唤醒机制的优化

package com.work.wor01;/** * 等待唤醒机制的优化 * 代码的优化? * 把同步的代码的操作内容定义在资源当中,比较好,为什么? * 因为更符合面向对象的思想 * * 把类中的方法设置为由synchronized修饰符修饰,那么他的对象就是线程安全的对象。 * * 优化步骤: * 1.成员私有化 * 2.提供了set和get的方法。 * 3.把

2016-08-20 11:20:43 326

原创 多线程——等待-唤醒机制

package com.work.wor01;/** * 等待唤醒机制 * 涉及到了3个方法: * 1.wait():等待,将正在执行的线程释放了其执行资格和执行权利,并且将他存储到线程池当中。 * (线程池:运行当中会出现很多正在被冻结的线程,都会存储到线程持当中,线程池其实就是容器,用来存储线程对象的, * 暂时不用的线程也要留着) * * 2.notify():唤醒,唤醒了

2016-08-20 10:59:52 1138

原创 多线程——简述线程间的通信

package com.work.wor01;/**线程间的通信 * 当多个线程对于同一个资源进行处理时,且处理方式相同,那么多个线程之间不需要通信。 * * 线程间的通信发生在多个线程在处理同一个资源,但是处理的动作(任务)却不相同。 * * *///资源类class Resource{ String name; String sex;}//描述输入任务的类cla

2016-08-20 10:36:12 668

原创 多线程——死锁产生的条件和过程分析

package com.qianfeng.demo02;/** * 出现死锁的四个必要条件: * 1.互斥条件:资源不能互相共享,各用各的。 * 2.请求与保持条件:已经得到了资源的线程,还想要申请新的资源。 * 3.非剥夺条件:已经分配的资源不能在相应的线程中强行的剥夺。 * 4.循环等待条件:系统中若干个线程组成了环路,该环路中每一个线程都在等待着相邻的线程占据的资源。 *

2016-08-20 10:14:04 3323 2

原创 多线程——同步嵌套造成死锁问题

package com.qianfeng.demo02;/** * 同步的另外一个弊端:死锁 * * 最常见的死锁的情况: * 同步嵌套,同步中还有同步,然后两个同步用的不是一把锁。 * * 不是使用死锁,而是避免死锁。 * * 尽量避免同步嵌套的情况。 * */public class DeadLockDemo01 { public static void mai

2016-08-20 10:12:01 3840

原创 多线程——静态同步函数的锁的相关问题

package com.qianfeng.demo01;/** * 关于静态同步函数使用的锁 * * 静态同步函数的锁是什么呢? * 静态随着类的加载而加载,而这时内存中存储的对象至少有一个,也就是该类的字节码文件对象。 * * 这个对象的表现形式:类名.class 他表示字节码文件对象, Class类的对象 * */public class ThreadDemo03

2016-08-20 09:55:51 946

原创 多线程——同步函数的锁的相关问题

package com.qianfeng.demo01;/** * 探讨同步函数的锁是什么? * 通过两个线程来验证同步函数的锁是什么? * 这两个线程都在卖票,一个在同步代码块当中卖票,一个在同步函数当中卖票, * 如果两个线程用到的是同一把锁就会同步,就不会出现卖错票的情况。 * * 同步函数使用的锁是什么呢? * 函数被对象所调用,代表调用函数的对象的引用就是this。

2016-08-20 09:48:45 407

原创 多线程——引用同步函数解决经典储户银行存钱问题

package com.work.wor01;/** * 引入同步函数的概念: * * 需求:有两个储户同时到一个银行去存钱,每人存3次,每次存100元。 * 要求打印出银行每次金额的变化情况(假设在储户存钱之前,银行金额为0) * * 分析:得出有两个类:银行和储户 * 这是一个多线程的问题,如何分析他的线程安全问题呢? * 1.通过线程的任务代码分析。 * 2.有没有共

2016-08-20 09:45:25 1058

原创 多线程——多线程解决经储户银行存钱问题2

package com.work.wor01;/** * 需求:有两个储户同时到一个银行去存钱,每人存3次,每次存100元。 * 要求打印出银行每次金额的变化情况(假设银行没钱) * * 分析:得出有两个类:银行和储户 * 这是一个多线程的问题,如何分析他的线程安全问题呢? * 1.通过线程的任务代码分析。 * 2.有没有共享数据,有没有多条语句在操作共享数据。 * *///

2016-08-20 09:26:03 2482

原创 多线程——用同步代码块解决经典储户银行存钱问题

package com.work.wor01;/** * 需求:有两个储户同时到一个银行去存钱,每人存3次,每次存100元。 * 要求打印出银行每次金额的变化情况(假设银行没钱) * * 分析:得出有两个类:银行和储户 * 这是一个多线程的问题,如何分析他的线程安全问题呢? * 1.通过线程的任务代码分析。 * 2.有没有共享数据,有没有多条语句在操作共享数据。 * */cl

2016-08-20 09:20:16 2054

原创 多线程——引入同步代码块解决窗口卖票产生负票的问题

/** * 通过画图分析,分析上一篇博文中错票产生的原因: * 已经判断为票数了,线程被阻塞了,先一次被切换到不需要判断了。 * 局部变量不会出现数字错乱的现象,而成员变量会出现数组出现负数的现象。 * * 安全的问题产生的原因: * 1.多个线程在操作共享数据。 * 2.操作共享数据的代码有多条。 * * 一个线程在执行多条操作共享数据的过程当中,其他线程参与的运算,这时就

2016-08-19 20:43:09 2252

原创 多线程——用创建线程的两种方式分别解决经典窗口卖票问题

/** * 窗口卖票经典实例,第一种继承Thread类多线程进行解决 * * * 需求:四个窗口同时卖票。票数100张 * * 分析: * 一个有100张票,卖票的动作是四个窗口所使用的,并且是同时进行的,那么就要使用多线程技术。 * * 怎么创建线程? * 1.继承Thread类,并且重写run方法。 * 2.将卖票的动作定义到run方法当中。 * */pac...

2016-08-19 20:33:10 6401 13

原创 多线程——何时建立多线程

package com.qianfeng.demo01;/** * 何时创建线程? * */class Person{ private String name; public Person(String name) { this.name = name; } public void show(){ for (int i = 0; i < 10; i++) { S

2016-08-19 19:52:50 440

原创 多线程——简述多线程

package com.qianfeng.demo01;/** * 进程:正在运行的程序。 * 线程:就是进行当中的执行单元或者是执行的情景或者执行路径,负责进程中程序执行的控制单元。 * 一个进程至少有一个线程。 * * 当一个进程中,线程有多个时,就是多线程。我们把这个应用程序称之为多线程应用程序。 * * 多线程存在解决的问题:多部分的代码同时执行。 * 什么是同时执行

2016-08-19 19:48:02 1003

原创 IO流——任意访问文件流

package com.qianfeng.demo02;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.Ran

2016-08-17 20:36:33 528

原创 IO流——重定向流

//package com.io.demo02;//重定向标输入import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.util.Scanner;public class RedirectDemo01 { public static vo

2016-08-17 20:16:03 867

原创 IO流——输出流(printStream和printWriter)

package com.io.demo02;import java.io.FileNotFoundException;import java.io.IOException;import java.io.PrintStream;//就是append方法public class PrintDemo01 {public static void main(String[] args) {P

2016-08-17 20:01:13 653

原创 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 475

原创 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 1106

原创 IO流——内存流(字节数组流)之ByteArrayOutputStream

package com.io.demo02;import java.io.ByteArrayOutputStream;/** * 字节数组输出流操作和文件输出流的操作不相同。 * 因为ByteArrayOutputStream类中存在的新增的方法,toByteArray()和toString(), * 通过这两个方法可以直接把流转换数组或者字符串,所以不要使用父类的引用。 *

2016-08-17 19:38:01 1748 5

原创 IO流——内存流(字节数组流)之ByteArrayInputStream

package com.io.demo02;import java.io.ByteArrayInputStream;import java.io.IOException;/** * ByteArrayInputStream:在创建对象时传入数组即可,不需要传文件,也没有新增加的方法,close关闭无效。 * 流本身就是内存中的资源,流中的内容也是内存中的资源,所以不用手动关闭,内存会

2016-08-17 19:23:02 3884

原创 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 439

原创 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 353

原创 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 773

原创 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 1103

原创 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 351

原创 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 329

原创 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 348

原创 IO流——缓冲流之BufferedInputStream

Buffered提供缓冲,提高效率

2016-08-16 17:58:15 484

原创 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 3007

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除