0121 计算机传输-线程

线程

两种实现方式
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

缓存处理

  • 在线发送:两个用户直接连起来(网络穿透)
  • 离线发送:上传到服务器,对方再接收

缓冲池
他的存在可以避免一边读一个字节,一边处理一个字节。
可以先放入内存,再统一处理。
可以处理的数据量就大了。

上一篇:线程Thread和线程池


下一篇:vue页面跳转并传递参数