Head First Java学习笔记(15):网络与线程

本文围绕Java多线程与网络连接展开。介绍了Socket连接需指定IP地址与端口号,端口选择范围为1024 - 65535。阐述了线程创建、启动,Runnable接口作用,线程调度器工作机制及同步化方法,还提及线程会产生并发性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

socket连接

1.Socket是一个代表两台机器之间网络连接的对象。
2.要创建Socket连接必须指定两项关于服务器的信息:它在哪里以及用哪个端口来收发数据。即IP地址与端口号。

Socket chatSocket = new Socket(“196.164.1.103”, 5000);
196.164.1.103:IP地址
5000:端口号

3.Socket连接的建立代表两台机器之间存有对方的信息,包括网络地址和TCP的端口号。

端口

1.TCP端口只是一个16位宽,用来识别服务器上特定程序的数字。
2.从0~1023的TCP端口号是保留给已知的特定服务使用,你不应该使用这些端口。
3.我们从1024~65535之间选择端口。

读写Socket

读:

1.建立对服务器的Socket连接
Socket chatSocket = new Socket(“127.0.0.1”, 5000);
2.建立连接到Socket上低层输入串流的InputStreamReader
InputStreamReader stream = new InputStreamReader(chatSocket.getInputStream());
3.建立BufferedReader来读取
BufferedReader reader = new BufferedReader(stream);
String message = reader.readLine();

写 :

1.对服务器建立Socket连接
Socket chatSocket = new Socket(“127.0.0.1”, 5000);
2.建立链接到Socket的PrintWriter
PrintWriter writer = new PrintWriter(chatSocket.getOutputStream());
3.写入数据
writer.println(“message to send”);
writer.print(“another message”);

线程

1.线程是独立的线程,它代表独立的执行空间。
2.Thread是Java中用来表示线程的类。
3.要建立线程就得创建Thread。
多线程:
1.Java虚拟机调用main()。

public static void main(String[] args) {
...
}

在这里插入图片描述
2.main()启动新的线程。新的线程启动期间main的线程会暂时停止执行。

Runnable r = new MyThreadJob();
Thread t = new Thread(r);
t.start();
Dog d = new Dog();

在这里插入图片描述
3.Java虚拟机会在线程与原来的主线程间切换直到两者都完成为止。
在这里插入图片描述
启动新的线程:
1.建立Runnable对象(线程的任务)
Runnable threadJob = new MyRunnable();
2.建立Thread对象并赋值Runnable
Thread myThread = new Thread(threadJob);
3.启动Thread
myThread.start();

Runnable接口

1.Runnable是一个接口,你会编写实现此接口的类,而此类就是你对线程要执行的任务的定义。
2.每个Thread需要一个任务来执行,一个可以放在执行空间的任务。
3.线程只在乎传入给Thread的构造函数的参数是否为实现Runnable的类。
4.Runnable这个接口只有一个方法:public void run().

线程调度器

1.线程调度器会做所有的决定,谁跑谁停都要看它。
2.显示调度器不可预测。
3.如果想要确保其他的线程有机会执行的话,就把线程放进睡眠状态。当线程醒来的时候,它会进入可执行状态等待被调度器挑出来执行。
注意:线程会产生并发性的问题

同步化

1.synchronized关键词代表线程需要一把钥匙来存取被同步化(synchronized)过的线程。
2.使用.synchronized关键词修饰方法使它每次只能被单一的线程存取。
3.要保护数据,就把作用在数据上的方法给同步化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值