JavaEE 学习专题

io流、泛型、线程

2017-10-03  本文已影响7人  全满

字节流

字符流

转换流:

  1. 可以把对应的字节流转换成字符流使用。
  2. 可以指定码表进行读写文件的数据。
    FileReader, FileWriter这两个类默认是使用的是gbk编码 表。不能由你来指定码表读写文件数据。
image.png image.png

泛型

image.png

自定义泛型

image.png image.png image.png

线程

方式一:继承Thread.
1. 自定义一个类继承Thread类。
2. 重写Thread的run方法,把自定义线程的任务代码定义在run方法上。
3. 创建Thread子类的对象,并且调用start方法启动一个线程。
方式二: 实现Runnable接口。
1. 自定义一个类实现Runnable接口。
2. 实现Runnable接口中的run方法,把自定义线程的任务代码定义在run方法上。
3. 创建Runable实现类 的对象。
4. 创建Thread对象,并且把Runnable实现类的对象作为参数传递。
5. 调用Thread对象的start方法开启线程。

线程安全问题的解决方案

1.必须要存在两个或者两个以上的线程共享着一个资源.

  1. 操作共享资源的代码必须有两句或者两句以上。
    修饰符 synchronized 返回值类型   函数名(形参列表..){
        
        }

注意:
1. 同步代码块的锁可以是任意的对象。 同步函数的锁是固定 的,非静态函数的锁对象是this对象。 静态函数的锁对象是class对象。
2. 锁对象必须是多线程共享的对象,否则锁不住。
3. 在同步代码块或者是同步函数中调用sleep方法是不会释放锁对象的,如果是调用了wait方法是会释放锁对象的。

image.png
上一篇 下一篇

猜你喜欢

热点阅读