输入输出IO
IO
I : input 输入 ;O: output 输出
输入输出 都是针对内存来说的,内存是参照物
File file=new File("f:/ 你是最叼的人啊 ");这个只是一个提供路径 和路径名字的作用
boolean f =file1.mkdir(); 这个方法是创建文件夹返回一个布尔值
boolean b = file.exists(); 判断文件夹是否存在返回一个布尔值boolean c = file.delete();删除文件夹是否成功文件返回一个布尔值
File file=new File(“f:/66/32/c32/”);
boolean mkdirs = file.mkdirs(); 这俩行代码是说明可以创建嵌套的多级文件夹 注意是mkdirs
boolean c = file.isFile(); 判断是否是文件
boolean b = file.isDirectory(); 判断是否是文件夹
File file=new File(“f:/text.doc”);
boolean f = file.createNewFile(); 创建文件是否是成功
文件的读写
-
实例化一个 对象,构建输入流
FileInputStream fis=new FileInputStream(file);
int length = fis.available();获取可变字符的长度,返会一个整数
int ch = fis.read();一个字节的读取返回这一个字节的ASCII值
-
实例化一个 对象,构建建输出流
FileOutputStream fos=new FileOutputStream(new File(“f:/b.txt”));
String str ="wei ren min fu wu "; 创建字符串
byte[] bytes = str.getBytes( ); 把字符串转换成每一个字节,并且保存到字符类型的数组中
fos.write(bytes); 读取每一个字节
序列化:把对象保存到文本中(输出)把对象转换为字节序列的过程称为对象的序列化。
反序列化:反过来把字节序列恢复为对象的过程称为对象的反序列化。
反序列化步骤:
1.新建一个类
2.类要实现一个接口(Serlizable)
3.使用ObjectOutPutStream把对象输出到文本中
如何查看自己电脑的ip地址:
1.首先windows+R 输入cmd
2.输入ipconfig 查看自己的ip
关键字ping 后面加+空格+127.0.0.1 查看自己的网卡坏了没 有响应 没有坏掉
线程和进程
进程:一个程序,运行起来之后,就叫进程
程序:代码的堆积
集成:代码运行
代码不运行 称呼为程序 代码开始运行 我们称之为进程
静态 程序 动态 进程
一个运行起来的程序对应一个进程
线程:线程是进程的组成单位,一个进程可以有多个线程,至少有一个线程。
每个线程都有自己独立的内存空间。
单核单线程
创建线程的两种方法:
1.(1).创建线程类 继承 Thread 重写run()方法
(2).启动线程 实例化 调用start() 方法
2.实现Runnable接口
为什么调用start()方法,而不是run方法
start方法是告诉虚拟机我准备好了
虚拟机并不一定立即执行当前线程。(因为cpu可能被占用)
到底什么时候执行由虚拟机决定。到时机成熟时(cpu空闲)
jvm会调用run方法执行线程中的代码
不确定
任何一个程序至少有一个线程,此线程就是主线程。
如果主线程启动了一个线程a,那么a结束之后主线程才会结束
新生状态: new 的时候
可运行状态: start
阻塞状态:
死亡状态:
线程调度的方法:
1.join() 插队 就喜欢霸道的!
2.sleep() 使当前线程休眠
3.yield() 使当前线程暂停,并执行其他的线程
thread.join();// 阻塞一个线程,直到另一个线程执行完 阻塞主线程 插队 使用这个方法 就是让其他的线程全部暂停 知道这个线程销毁 其他的才能执行 有点霸道哦!
Thread.yield()方法的作用:暂停当前正在执行的线程,并执行其他线程。(可能没有效果)
yield()让当前正在运行的线程回到可运行状态,以允许具有相同优先级的其他线程获得运行的机会。因此,使用yield()的目的是让具有相同优先级的线程之间能够适当的轮换执行。但是,实际中无法保证yield()达到让步的目的,因为,让步的线程可能被线程调度程序再次选中。
结论:大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果。
死锁
同步:多个线程之间有先后执行顺序
优点: 数据安全 缺点:效率低
异步:多个线程之间互不干扰
优点:速度快,效率高 缺点: 数据安全问题
synchronized 修饰的代码在一个时间段内,只能被一个线程执行,其他线程处于被挂起状态,等到线程执行完毕,此线程就释放资源,其他线程过来竞争,只有一个线程可以竞争成功。