随笔分类 -  java

java学习交流
摘要: 阅读全文
posted @ 2014-06-11 22:02 stark_javac 阅读(850) 评论(0) 推荐(0)
摘要:java当中readLine同时读写的问题。 阅读全文
posted @ 2014-02-15 11:16 stark_javac 阅读(1472) 评论(1) 推荐(0)
摘要:在上一节当中我们说道了,java多线程当中单个消费者对应单个生产者的关系。这个时候有几个点需要注意一下,第一个就是把if判断flag的语句改成while这样能够避免,比如如果我们这个时候用if的话判断完为真之后,线程就睡过去了,但是当下一次线程notify的时候,这个时候生产者还有消费者,也就是一个锁上面的线程拥有线程苏醒的机会是等同的。这个时候,如果生产者冻结之后,紧接着notify的话这个时候苏醒的还可能是生产者,这是我们不愿意看到的。那我们应该如何来处理呢,这个时候我们就应该把if改成while因为while是个循环,当下一次该线程苏醒的时候还应到回过头来判断,flag标记,这样就避免了 阅读全文
posted @ 2013-10-21 21:56 stark_javac 阅读(1028) 评论(0) 推荐(0)
摘要:在java多线程当中还有一种关系需要我们来重点掌握,那就是生产者和消费者的关系。那么什么是生产者,什么是消费者呢?我们可以举个例子来说,有张三、李四负责生产烤鸭,王五、马六负责吃烤鸭,那么前者生产完烤鸭之后,如果烤鸭没有被吃完的话,这个时候就不再生产了,如果此时烤鸭吃没了,这个时候消费者就要告诉生产者,烤鸭吃没了,你要继续生产烤鸭,否则生产者一直处于等待的状态。如何来用代码体现呢?1、定义两个类,一个是生产者类 Product 一个是消费者类Consume,两个类分别实现Runnable中的run方法。2、Product当中的run方法的任务就是生产烤鸭,Consume当中的run方法中就负责 阅读全文
posted @ 2013-10-20 20:29 stark_javac 阅读(303) 评论(0) 推荐(0)
摘要:形成死锁的前提是同步代码块嵌套。什么是死锁?当一个线程拿到锁以后在这个锁内部的代码需要访问另一段的代码的时候另外一个程序的锁被另外一个线程拿到,这样的话,就造成了两个锁互不想让程序没法往下执行的这种状况就是死锁。 1 class DeadDemoA implements Runnable 2 { 3 Object obj = new Object(); 4 int x = 0; 5 6 public void run() 7 { 8 9 10 if(x == 0){11 12 while(tr... 阅读全文
posted @ 2013-10-20 16:09 stark_javac 阅读(264) 评论(0) 推荐(0)
摘要:这一节我们来说一个示例就是卖票示例:需求:我们现在有100张票,然后分四个窗口来卖,直到卖完为止。思路:1、先定一个一个票类,描述票的属性,还有打印卖出的票,并且实现Runnable中的run方法。2、定义一个主方法,把这个类当成一个独立的运行程序。3、在主方法当中创建4个线程来卖票。代码: 1 class Ticket implements Runnable 2 { 3 4 int num = 100; 5 6 public void sellT() 7 { 8 9 while(true)10 {11 12 ... 阅读全文
posted @ 2013-10-20 14:04 stark_javac 阅读(1512) 评论(0) 推荐(0)
摘要:我们上一节当中讲到了创建线程的第一种方法,就是继承Thread类,覆写Thread当中的run方法,然后创建子类对象,之后调用对象的start方法启动线程。但是这种方法有一个缺陷,因为我们知道在java当中类与类当中是单继承的关系,假如现在我们的子类是另外一个类的子类,这个时候如果这个子类想使用多线程的话,就没有办法了。我们之前说接口的时候,知道接口的存在就是为了扩展类的功能,而避免多继承。那么有没有一种方法可以通过实现接口来完成多线程的创建呢?我们查阅Api可以知道,在java当中为我们提供了一个Runnable接口。在查阅文档的同时,我们知道在Runnable这个接口当中,只有一个run方 阅读全文
posted @ 2013-10-20 13:09 stark_javac 阅读(318) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2013-10-19 09:44 stark_javac 阅读(149) 评论(0) 推荐(0)
摘要:现在我们有这么一个需求,就是在主线程在运行的同时,我们想做其他的任务,这个时候我们就用到了多线程。那么如何创建多线程,我们知道在系统当中qq的多线程创建是由操作系统来完成的,那么如果我们想在java当中创建多线程的话,应该如何去做呢?解决问题的时候,我们第一个应该想到的是,java当中是否给我们提供了解决该问题的对象,并且把这个对象暴漏出来供我们使用,特别是设计系统。这个时候我们去查阅javaapi。创建线程的步骤:1、创建一个类继承Thread类,此时这个类也就是线程2、在该类当中覆盖Thread类的run()方法。3、直接创建Thread子类的对象创建线程。4、调用start()方法,开启 阅读全文
posted @ 2013-10-18 12:42 stark_javac 阅读(311) 评论(0) 推荐(0)
摘要:一、线程总述: 线程是java当中一个重要的内容,如果想说线程的话,那我们应该先来讲一下什么是进程。 进程:那么什么是进程呢,进程从字面上来理解就是,正在进行的程序。就比如说我们在windows当中打开任务管理器之后,我们看到的一个个程序一样。这个程序是在内存当中运行的,我们也可以说,进程就是对应在内存当中该程序所开辟的内存空间。在程序当中程序并不是负责程序执行的,实际上真正执行的是线程也叫做执行路径,从上往下执行,进程只是负责分配内存空间。 线程:就是程序当中中,负责程序执行的控制单元,也叫做执行路径。一个进程当中可以有多个执行路径,称之为多线程。一个进程当中,至少要有一个线程。多线程... 阅读全文
posted @ 2013-10-17 21:08 stark_javac 阅读(243) 评论(0) 推荐(0)
摘要:前面我们学习了面向对象处理异常的两种方式,一个是抛出异常,一个是捕捉异常。但是在异常处理当中还有一个关键字我们没有讲到,就是finally关键字。这个关键字的作用是在其后的关键字无论是什么都会被执行到。比如我们先来看一个例子: 1 class DemoE3 2 { 3 4 int [] arr = {2,3,4,5}; 5 int index = 0; 6 7 DemoE3(int index) 8 { 9 10 this.index = index;11 12 }13 14 void method()15 {16 1... 阅读全文
posted @ 2013-10-15 21:42 stark_javac 阅读(198) 评论(0) 推荐(0)
摘要:一、异常的概述: 什么是异常?在我们编写java程序的时候,会出现一些问题,比如内存溢出啊或者数组索引超出最大索引啊,这些编程当中出现的这些个问题就是异常。但是异常也分为可以处理的和不可以处理的。比如JVM虚拟机出现的异常就是不可以处理的。可以处理的异常就是指,在我们java程序当中的数组最大索引超出啊,这些问题我们是可以处理的。同时异常也分为Error和Exception。从字面意义上来理解的话,可以理解成错误和异常。Error指在JVM运行当中出现异常,程序自动退出。下面我们来写个例子看下什么是异常? 1 class Demo1 2 { 3 4 int[] arr = ... 阅读全文
posted @ 2013-10-09 13:40 stark_javac 阅读(241) 评论(0) 推荐(0)
摘要:之前我们提到“匿名”这个字眼的时候,是在学习new对象的时候,创建匿名对象的时候用到的,之所以说是匿名,是因为直接创建对象,而没有把这个对象赋值给某个值,才称之为匿名。匿名对象回顾:class NoObject{ void method() { System.out.println("Hello NoNameObj"); }}class NoName{ public static void main(String[] args) { new NoObject().method();//这里创建完对象之后,并没有把对象直接赋值给某个值,而是创建完对象之后,直接调用对象,之后这 阅读全文
posted @ 2013-10-08 21:42 stark_javac 阅读(367) 评论(0) 推荐(0)
摘要:什么是面向对象内部类呢?所谓的内部类,即从字面意义上来理解的话,就是把类放到类当中。那么内部类都有什么特点呢?1、内部类可以访问包裹他的类的成员。2、如果包裹他的类想访问被其包裹的类的话就得实例化,才可以访问。代码示例: 1 class Outer 2 { 3 4 int num = 10; 5 6 void show() 7 { 8 9 System.out.println("Outer Show method!!");10 11 }12 13 void method()14 {15 16 Inne... 阅读全文
posted @ 2013-10-06 12:31 stark_javac 阅读(215) 评论(0) 推荐(0)
摘要:如何理解多态,让我们举个例子来描述一下,因为单纯的说多态大家可能不理解: 1 abstract class Animal 2 { 3 4 public int age = 10; 5 6 abstract void eat(); 7 8 public void run() 9 {10 11 System.out.println("I Run!");12 13 }14 15 }16 17 class Dog extends Animal18 {19 20 public void eat()21 {22 23 ... 阅读全文
posted @ 2013-10-02 08:45 stark_javac 阅读(282) 评论(0) 推荐(0)
摘要:上一节当中我们说道抽象类,抽象类当中的方法可以是抽象的也可以是非抽象的,那么当抽象类中所有方法都是抽象的时候,我们就可以把它重新定义为接口。代码示例:1 abstract class Animal2 {3 4 abstract void eat();5 abstract void goToBed();6 7 }上述代码写成接口的形式为:1 interface Animals2 {3 4 public void eat();5 public void goToBed();6 7 }在接口当中的方法,也只能是方法名称,没有方法体。类与类当中存在的关系是继承关系,那么... 阅读全文
posted @ 2013-10-01 08:44 stark_javac 阅读(277) 评论(0) 推荐(0)
摘要:什么是抽象类,之所以说抽象就是具体的反义词喽~抽象离我们最近的距离也就是初中的时候学过的美术课,抽象画派。拿一桶画彩就这么往画布上一泼,那就是抽象。那么java世界当中什么是抽象呢?我们再拿动物还有狗的这个例子来讲吧,因为这个非常的好理解。比如说,你可以说狗吃饭吧,然后小狗狗就去吃饭了。那么你能说,动物你去吃饭吧?这个就搞的我们有点迷糊了,动物怎么吃饭,动物是一个类的概括。就向你去菜市场买鸡吃,你冲老板说:我来买个动物。动物只是个概念而不是一个具体到某一个具体的类别的动物,这里动物这个概念就是抽象的,我们并不能具体知道,别人的所指是一个具体的什么东西。还有,我们在一个类当中,比如拿动物这个类来 阅读全文
posted @ 2013-09-29 08:35 stark_javac 阅读(243) 评论(0) 推荐(0)
摘要:之前我们讲过继承的相关知识了,继承就是子类继承父类的属性和方法并且还可以覆盖父类的方法。但是这样有一个缺陷是什么呢,就是当我们一个类当中涉及一些封装的核心的东西或者对整个系统非常关键的方法或者类的时候,这个时候如果子类覆盖掉父类的方法将会对我们带来安全隐患。为了能够继承父类的方法,同时又能够保证我们类的安全性,这个时候我们就用到了final这个关键字。final关键字之一: final从字面意思上来理解的话,就是最后的意思,也就是说这个方法一经定义之后,就是最后的,不能更改的。当我们用这个关键字修饰一个类的方法的时候,任何继承自这个类的子类,都不能够在自己的方法当中来覆盖他父类的这个方法。代. 阅读全文
posted @ 2013-09-28 21:49 stark_javac 阅读(232) 评论(0) 推荐(0)
摘要:在之前讲到java面向对象继承的时候,我们只讲到了两个比较重要的知识点,一个是父子类当中有同名的成员变量,这个时候,我们引入了super这个关键字来区分这两个同名成员变量,除此之外,我们还讲到了父子同名函数的覆盖,这父子同名函数必须是参数类型、个数相同,返回值也相同才可以,同时子类要覆盖后的成员方法的访问权限要大于等于父类当中的同名函数权限。那么还有一个地方我们没有讲到,那就是父子当中的构造函数是怎样的?class Fu{ Fu() { System.out.println("Fu chu shihua "); }}class Zi extends Fu{ Zi() { S 阅读全文
posted @ 2013-09-25 21:18 stark_javac 阅读(1250) 评论(0) 推荐(0)
摘要:在我们编写程序的过程当中,会遇到这种情况: 比如现在有一个狗,他的功能有跑,有跳,有吃,有叫,属性有雌雄,大小,颜色等等,同时现在我们也有一个猫,上述功能她也有。这个时候我们写代码的时候,就得分别把上述的功能给猫写一遍,也要给狗写一遍,这样合理么?这就违背了面向对象复用性的原则,为了解决这类问题,我们这里引入继承这个概念,那么什么是继承?继承的概念:继承就是把某几个类具有相同属性或者功能的代码单独抽象出来放到一个类当中,当编写这些类的时候继承抽象出来的类,可以提高复用性,这个就是继承。比如说,这里我们把猫和狗的相同属性和功能抽象出来放到动物这个类当中,这个时候猫和狗就被称为子类,而动物这个类. 阅读全文
posted @ 2013-09-24 22:01 stark_javac 阅读(279) 评论(0) 推荐(0)