一、网络编程: Socket
- 步骤: 建立Socket对象连接服务器端口号,Socket socket = new Socket(“127.0.0.1”,5555);获得输入输出流, PrintWriter writer = new PrintWriter(socket.getOutputStream());读写,writer.println();
二、多线程
-
多线程实现方法: 抽象的说,thread是一个工人,而runnable是工作的内容
a. 建立Runnable对象,代表新线程的任务;
b. 建立Thread对象并赋值Runnable任务;
c. 启动Thread。 -
Java线程中的五种状态
a. new状态:新建状态 new thread();
b.runnable状态: 可执行状态 thread.start();
c. running状态:执行中状态;
d. dead状态: 执行完状态;
e. locked状态:堵塞状态,调度其他线程中. -
线程并发性问题
a. 原因:两个或两个以上的线程存取单一对象的数据;
b. 解决方法:synchronized 同步化方法;
c. 同步化带来的问题:死锁问题; -
synchronized同步化说明
a. 原理:设置对象锁,只有拿到钥匙的线程才能运行其方法;
b. synchronized关键字格式: public synchronized void go(){…};
c. 对象就算有多个同步化方法,也还是只有一个锁,也就是一旦某个进程进入该对象的同步化方法,其他进程就无法进入该对象上的任何同步化进程; -
死锁问题说明
原理:二者或二者以上互相持有己方的对象锁而需要进入对方的同步化方法,导致无限等待。比如,a进入对象A的同步化方法,持有A的对象锁;b进入对象B的同步化方法,持有B的对象锁;接下来a在对象A中的同步化方法中要进入对象B的同步化方法,等待b完成,b在对象B的同步化方法中要进入对象A的同步化方法,等待a完成,二者无限等待。