黑马程序员------2015.6.17java基础--异常--package---线程

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1.    自定义异常时:如果该异常的发生,无法再继续进行运算
            就让自定义异常继承RuntimeException
        对于异常分两种:
        a.编译时被检测的异常
            如函数内部抛出非运行时异常,而函数外没有抛出异常,则会编译失败
            或者,程序调用抛出异常的函数时,没有对其进行处理。
        b.编译时不被检测的异常(运行时异常,RuntimeException以及其子类)
            在函数内部抛出运行时异常就可以。
2.finally通常用于关闭资源    
3.格式-:try{              

                 } catch() {
                
                 }
    格式二:try{              

                 } catch() {
                
                 } finally {
                
                 }
    格式三:try{              
            
                     } finally {
            
                  }        
4.异常在子父类覆盖中的体现
    a.子类在覆盖父类时,如果父类的方法抛出异常,那么子类覆盖方法,只能抛出父类的异常或者该异常的子类               
    b.如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
    c.如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。            
        如果子类方法发生了异常,就必须要进行try处理,绝对不能抛。
5.只有出现System.exit(0);finally不会被执行到        
6.继承体系中 相同的变量不会被覆盖
7.throw单独存在时,下面不要定义语句,因为执行不到。
8.包package
        将class文件放到指定的文件中
        javac -d c:\file Test.java
        javac -d . Test.java        //放到当前文件中
9.包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰
        不同包中的子类还可以直接访问父类中被protected权限修饰的成员
        
    包与包之间可以使用的权限有public protected
    
                   public       protected        default     private
同一个类中    ok              ok             ok           ok
同一个包中    ok              ok             ok
子类          ok              ok
不同包            ok
10.一个文件中不允许出现两个同为public的类
11.import 为了简化类的书写
     建议不写通配符* 占内存
12.进程:是一个正在执行中的程序
                        每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元
     线程:就是进程中的一个独立的控制单元。
                         线程在控制着进程的执行。
     一个进程中至少有一个线程。
    
     java JVM 启动的时候会有一个进程java.exe
     该进程中至少一个线程负责java程序的执行。
     而且这个线程运行的代码存在于main方法中
     该线程称为主线程。
    
     其实更细节的说jvm,它启动不止一个线程,还有负责垃圾回收机制的线程。
13.如何定义一个线程呢?
    方式一:继承Thread,覆盖run方法
    步骤:a.定义类继承Thread
                b.复写Thread类中的run方法
                        目的:将自定义的代码存储在run方法中
                c.调用线程的start方法,
                        该方法有两个作用:启动线程,调用run方法
14.发现运行结果每一次都不同。
     因为多线程都获取cpu的执行权。cpu执行到谁,谁就运行。
     明确一点,在某时刻只能有一个程序在运行(多核除外)。
     cpu在做着快速的切换,以达到看上去是同时运行的效果。                        
    
     这就是多线程的一个特性:随机性,谁抢到谁执行,至于执行多长时间,cpu说了算。
15.为什么要覆盖Thread的run方法?
        Thread类用于描述线程。
        该类就定义了一个功能,用于存储线程类要运行的代码,该存储功能就是run方法
        
        也就是说Thread类中的run方法,用于存储线程要运行的代码。    
16.

/*
            练习:创建两个线程和主线程同时运行
            原来线程都有自己默认的名称
            Thread-编号 该编号从0开始
            
            static Thread currentThread();获取当前线程对象
            相当于  this
            getName();获取线程名称
            
            设置线程名称:setName或者构造函数
    */
    
        class ThreadDemo
        {
            public static void main(String[] args)
            {
                Demo d1 = new Demo("one");
                Demo d2 = new Demo("two");
                d1.start();
                d2.start();
                //d.run();这样仅仅是对象调用方法,而线程创建了,并没有运行
                for(int x=0;x<100;x++)
                {
                    System.out.println("hello world"+x);
                }    
            }    
        }
        
        class Demo extends Thread
        {
            public Demo(String name)
            {
                super(name);    
            }
            public void run()
            {
                for(int x=0;x<100;x++)
                {
                    //this.getName()获得线程的名字,每个线程都有自己的名字
                    //Thread-编号 该编号从0开始
                    System.out.println(this.getName()+"demo"+x);
                    
                    System.out.println((Thread.currentThread()==this)+this.getName()+x);
                }    
            }    
        }


17.局部变量在每一个线程中都有一份   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值