您的位置:首页 > 理论基础 > 计算机网络

Java网络与线程之初总结

2014-04-04 16:44 471 查看
有关线程方面的总结:

1.以小T描述的thread是个独立的线程。

2.Java中的每个独立线程都有独立 的执行空间。

3.大写的T的thread是java.lang.Thread这个类。它的对象是用来表示线程。

4.Thread需要任务,任务是实现Runnable的实例。

5.Runnale这个接口只有一个办法。

6.run()会是新线程执行的第一个方法。

7.要把Runnable传给Thread的构造函数才能启动新的线程。

8.线程在初始化以后还没有调用start()之前处于新建立的状态。

9.调用Thread对象的start()之后,会建立出新的执行空间,它会处于可执行状态等待被挑选出来执行。

10.当Java虚拟机的调度器选择某个线程之后它就处于某个执行中的状态,单处理器的机器只能有一个执行中的线程。

11.有时线程会因某些原因而被堵塞。

12.调度不能保证如任何执行时间和顺序,所以你不能期待它会完全平均分配执行,你最多也只能影响sleep的最小保证时间。

有关服务器与客户端 的总结:

1.客户端与服务器的应用程序通过Socket连接来沟通。

2.Socket代表两个应用程序之间的连接,他们可能会是在不同机器上执行的。

3.客户端必须知道服务器应用程序的IP地址(或网络名称)和端口号。

4.TCP端口号是个16位的值,用来指定特定的应用程序。它能够让用户连接到服务器上各种不同的应用程序。

5.从0~1023的端口号是保留给HTTP,FTP,SMTP等已知的服务。

6.客户端通过建立Socket来连接服务器。

    Socket s = new Socket("127.0.0.1",4200);

7.一旦建立了连接,客户端可以从Socket取得低层串流。

   sock,getInputStream();

8.建立BufferedReader链接到InputStreamReader与来自Socket的输入串流以读取服务器的文本数据。

9.InputStreamReader是个转换字节成字符的桥梁。它主要是用来链接BufferedReader与低层的Socket输入串流。

10.建立直接链接Socket输入串流的PrintWriter请求print()方法或println()方法来送出String给服务器。

11.服务器可以使用ServerSocket来等待用户对特定端口的请求。

12.当ServerSocket来等待用户对特定特定端口的请求。

13.当ServerSocket接到请求时,它会做一个Socket连接来接受客户端的请求。

锁和sleep:

1.Thread.sleep这个静态方法可以强制线程进入等待状态到过了设定的时间为止,例如Thread。sleep(200)会睡上200个毫秒。

2.可以调用sleep()让所有的线程都有机会运行。

3.sleep()方法可能会抛出InterruptedException异常,所以要包在try/catch块,或者把它也申明出来。

4.你可以用setName()方法来帮线命名,通常用来除错的。

5.如果两个或以上的线程存取堆上相同的对象可能会出现严重的问题。

6.要让对象在线程上有足够的安全性,就要判断出哪些指令不能被分割执行。

7.使用synchronized这个关键词修饰符可以防止两个线程同时进入同一个对象的同一个方法。

8.每个对象都有单一的锁,单一的钥匙。这只会在对象带有同步化方法时才有实际的用途。

9.线程尝试要进入同步化的方法时必须要取得对象的钥匙,如果因为已经被别的线程拿走了,那就得等。

10.对象就算是有多个同步化的方法,也还是只有一个锁。一旦某个线程进入该对象的同步化方法,其它线程就无法进入该对象的任何同步化线程。

此篇总结参考书:

   《head first Java》。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络 线程