JavaSE自学笔记整理(六)

来源:互联网 发布:淘宝固定悬浮导航 编辑:程序博客网 时间:2024/05/18 02:05

一、system类

主要用于获取系统的属性数据    常用的方法:        arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 、            src - 源数组。            srcPos - 源数组中的起始位置。            dest - 目标数组。            destPos - 目标数据中的起始位置。            length - 要复制的数组元素的数量。         currenYimetMillis  获取系统当前时间,返回毫秒值        exit(int status) 退出jvm,参数是0表示正常退出,参数是非0表示异常退出        gc()    建议jvm尽快启动垃圾回收机器回收垃圾        finalize()  如果一个对象被垃圾回收器回收,则先调用该对象的finalize方法        getenv(String name)   获取指定的环境变量值        getProperties()          确定当前的系统属性。

二、RunTime类

该类代表了应用程序运行的环境    常用的方法:        getRunTime  获取当前应用程序的运行环境对象        exec(String command) 根据指定的路径执行对应的可执行对象        freeMemory()   返回 Java 虚拟机中的空闲内存量。以字节为单位        maxMemory()   返回 Java 虚拟机试图使用的最大内存量        totalMemory()  返回 Java 虚拟机中的内存总量

三、Date、Calendar、类

Date、Calendar类都是日期类,只不过date类的方法,大部分被Calendar取代,并且Calendar类是抽象类,无法直接创建对象。    Calendar.getinstance用来获取Calendar对象        获取年月日时分秒的方法:            年:get(Calendar.YEAR)            月:get(Calendar.MONTH)            日:get(Calendar.DATE)            时:get(Calendar.HOUR_OF_DAY)            分:get(Calendar.MINUTE)            秒:get(Calendar.SECOND)        但是这并不是我们要的格式,如何编排格式呢???日期格式化类帮我们

四、SimpleDateFormat(日期格式化类)

常用方法:    format(Date date, StringBuffer toAppendTo, FieldPosition pos)          将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer。    parse(String text, ParsePosition pos) 解析字符串的文本,生成 Date。    例如:    public static void main(String[] args){        Date date = new Date();        SimpleDateFormat simpledateformat = new SimpleDateFormat("YYYY年MM月dd日  HH时mm分ss秒");        String time = simpledateformat.format(date);        System.out.println("当前时间是:"+time);        //解析字符串        String birthday = "1991年12月12日  09:09:12";  //注意:字符串的格式一定要和SimpleDateFormat指定的格式相同        Date date2 = simpleDateFormat.parse(birthday);        System.out.println(date2);    }

五、Math类

数学类,主要提供了很多的数学公式,静态类可直接调用方法    主要方法:        abs(double a)  返回 double 值的绝对值        ceil(double a)  向上取整        floor(double a)  向下取整        round(double a)  四舍五入        random()  产生一个随机数  大于等于 0.0 且小于 1.0 的伪随机 double 值。

六、线程

1.概述        进程:正在执行的应用程序,进程负责了内存空间的划分         线程:在一个进程中负责代码的执行         多线程:在一个进程中有多个线程在执行不同的任务         一个java应用程序中至少有两个线程:            1.主线程负责main方法的运行            2.垃圾回收器线程负责垃圾回收         多线程的好处:            1.解决一个进程可以多个任务同时进行            2.提高资源利用率         多线程的坏处:            1.增加cpu负担            2.降低一个进程中线程的执行概率            3.引发了线程安全问题            4.出现了死锁现象
2.创建线程的方式:        方式一:            1.自定义一个类继承Thread2.重写run方法.                      目的:每个任务都有自己的线程代码,主线程执行main方法的代码,其他任务的代码要写run代码中            3.创建Thread子类对象,并调用start方法开启线程                注意:线程一旦开启,则会自动执行run方法中的代码,千万不能直接调用run方法        方式二:方式二:            1.自定义一个类实现runnable接口;            2.重写runnable的run()方法;            3.创建runnable实现类的对象;            4.创建Thread对象,把runnable实现类的对象传进去;            5.调用start()方法            注意:runable实现类对象并不是线程对象,只有Thread类或者继承了Thread类才是线程对象
3.线程的状态        新创建状态:  该状态是线程刚创建,还没有运行        可运行状态:  该状态是调用了start方法,可以运行啦。        运行状态:       该状态是cpu调用了该线程,进入运行        临时阻塞状态: 该状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。  可能是调用了sleep或者wait方法        死亡状态:       该状态是线程执行结束
4.线程常用的方法:        Thread(String name)         初始化线程的名字        getName()                   返回线程的名字        setName(String name)        设置线程对象名        sleep()                     线程睡眠指定的毫秒数  静态方法    哪个线程执行了该方法,哪个线程睡眠        currentThread()             返回当前线程对象    静态方法  哪个线程调用了改方法,返回哪个线程        getPriority()               返回当前线程对象的优先级,默认的线程优先级为5        setPriority(int newPriority)设置线程的优先级  数字越大  优先级越高(优先级范围是1-10)
5.线程的同步方式        当两个或者多个线程共享一个资源时,就会出现线程打架的现象,如何避免这种现象呢,可以用同步来解决        方式一:同步代码块            格式 :                synchronized(锁对象){                      需要被同步的代码;                }            注意事项:                1.任何对象都可以作为锁对象;                2.在代码块中调用sleep方法,并不会释放锁对象                3.只有在真正出现线程安全问题时才使用同步代码块,否则会降低效率                    线程安全出现的原因:                        1.有两个及两个以上的线程存在,且共享一个资源;                        2.有多个语句共同操作一个资源                4.多线程的锁对象必须是唯一共享的,否则无效(static修饰共享)        方式二:同步函数  即用synchronized修饰该函数            注意事项:                1.如果是非静态的同步函数,则锁对象是this;如果是静态同步函数,则锁对象为当前函数所属的类字节码文件(.class文件);                2.同步函数的锁对象是固定的,不能人为改        通过以上两种方式解决了线程安全的问题的同时,也会出现死锁现象,但是目前并没有解决方法,死锁不是每次都会出现,只能尽量避免
6.线程通讯        一个线程完成了自己的任务时,要通知另外一个线程去完成他的任务,典型的例子是生产者和消费者        需要用到的两个方法:            wait() 等待   如果一个线程执行了wait()方法,则该线程处于等待状态,需要其他线程执行notify方法唤醒;            notify() 唤醒                wait和notify方法注意的事项:                1.两个方法都是属于Object类                2.两个方法必须在同步代码块或者是同步函数中使用                3.两个方法必须由锁对象调用                4.先唤醒再等待         线程中断:            1.一般都是通过设置变量来停止;            2.若要停止一个等待状态的线程,则需要notify()或者interrupt()配合
7.后台线程        实现格式:            setDaemon(true);            注意:一旦主线程死亡,后台线程也跟只死亡
0 0
原创粉丝点击