编程开发 > JAVA > 文章内容

java基础知识总结(138)

2016-9-19编辑:ljnbset

案例一:ObjectIODemo(理解  对象序列化概念,重复讲下深层、浅层复制)

   1、对象的序列化: 将Object转换为byte序列,就是序列化,反之叫反序列化

   2、为什么要序列化: 为了在byte流中存储对象

   3、如何序列化: 使用writeObject(Object)/readObject()

 1) 序列化流, 是过滤流

    ObjectOutputStream writeObject(Object) 序列化对象

    ObjectInputStream readObject() 对象的反序列化

 2) 序列化接口(必须实现Serializable接口): 对象必须实现"序列化接口"才能进行 "序列化"

    否则出现不能序列化的异常!

ObjectOutputStream out = new ObjectOutputStream(

        new BufferedOutputStream(

            new FileOutputStream(file)));

 往文件里写入一个对象,从文件里读一个对象,  深层复制,浅层复制

  List others = (List)in.readObject();

  List list = new ArrayList(cards);

案例二:ByteArrayStreamDemo(了解是字节流,在内存中存取速度很快,内存的io不用加缓存流)

    byte[] buf = {5,(byte)0xff,-1};//{05,ff,ff}

    //将byte数组作为流进行读取处理, 流不仅仅是出来文件的!

    ByteArrayInputStream in =

      new ByteArrayInputStream(buf);

   ByteArrayOutputStream out =

   //BAOS 中包含一个变长Byte数组

  //将内存中的变长byte[] 数组作为输出流 

      new ByteArrayOutputStream();

    out.write(5);

 案例三: ByteArrayIODemo(没有新的内容,只是底层的字节流换了,过滤流(功能加强流)还是一样的)

案例四:CopyDemo:    IOUtils    public static Object deepCopy(Object obj){

Java 多线程编程(多线程程序的意义:支持代码并行)

重点:java创建线程的两种方式    线程图

一、概念

  1) 程序: 指令+数据的byte序列, 如: qq.exe

  2) 进程: 正在运行的程序, 是程序动态的执行过程(运行于主存储器)

  3) 线程: 在进程内部, 并发运程的过程(方法)

  4) 并发: 进程是并发运行的, OS将时间划分为很多时间片段, 尽可能

   均匀分配给正在运行的程序, 微观上进程走走停停, 宏观上都在运行

   这种都运行的现象叫: 并发, 但是不是绝对意义上的"同时"

二、java创建一个线程的方法   对照案例一:     对照代码画一下执行线程图,重点表达与main()的关系,启动线程后,与main就没关系了)

   在java中,所有线程都直接间接由主线程启动,但启动后独立于主线程

    1、 继承Thread类, 覆盖run()方法, 提供并发运程的过程

    2、创建这个类的实例

    3、使用start() 方法启动线程   // 重点:调用重写后的run方法

   案例三:

  2)实现Runnable接口  

    a 实现Runnable接口, 实现run()方法, 提供并发运程的过程

    b 创建这个类的实例, 用这个实例作为Thread构造器参数

      创建Thread类.

    c 使用start() 方法启动线程

    class Foo implements Runnable{

             public void run(){

                       //....

             }

    }

    Thread t = new Thread(new Foo());

    t.start();

案例二:CurrentThreadDemo

    //main方法被主线程调用,主线程是Thread实例

    //可以使用Thread.currentThread()获得正在调用当前方法的线程

重点理解:方法是被线程调用的,具体是哪个线程,运行期决定

两种工作中用得比较多的写法:

  new Thread(){

      public void run(){.....}

    }.start();

    new Thread(new Runnable(){

      public void run(){......}

    }).start();

java基础知识总结(137)

热点推荐

登录注册
触屏版电脑版网站地图