两种实现方式
Thread 类
Runnable 接口
为什么需要多线程?
例如:主函数中有个死循环,后面的代码就没用了。
在通信中,经常用到死循环。
比如一个客户端一直待机,来等待一个消息传入。
比如服务端一直阻塞,也不知道客户端什么时候接入。
比如一个界面一直在屏幕上。
比如对于组件的监听。
比如客户端通过服务端简历视频聊天。什么是多线程
进程是程序运行的最小单位。
执行代码指令的时候是以线程为单位。
一段程序跑起来不一定只增加一个线程。需要依赖JVM
如何再开一个线程创建一个类 继承Thread创建一个类 实现Runable接口
public class TestThread { public static void main(String[] args) { PrimeRun p1=new PrimeRun(12211); PrimeRun p2=new PrimeRun(12123); //创建线程并启动 new Thread(p1).start(); new Thread(p2).start(); //此时为双线程 } } class PrimeRun implements Runnable{ long minPrime; PrimeRun(long minPrime){ this.minPrime=minPrime; } @Override public void run() { while(true){ System.out.println(minPrime); } } }
消息发送的模型
A>S>B
B>S>A
AB用户各需要两个线程 来负责收发
S可以使用两个线程
负责收A发B,收B发A
或者4个线程
收A,收B,发A,发B
在线发送:两个用户直接连起来(网络穿透)离线发送:上传到服务器,对方再接收
缓冲池
他的存在可以避免一边读一个字节,一边处理一个字节。
可以先放入内存,再统一处理。
可以处理的数据量就大了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)