03 2012 档案
摘要:在(一)中只用了一个线程来处理客户端连接,显然这样是不合适的,客户端只能一个一个的去连接服务器。现在原来的程序,每次获取到一个客户端连接之后,启动一个线程去处理它,服务器主线程继续等待客户端的其他连接。怎么做呢?只要在获取到客户端的连接之后,启动新线程就可以了。这个服务器还是只有一个功能,只是把客户端获取的数据,直接写回去。package mxf.study.java.nio;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket
阅读全文
摘要:很久不写Socket了,很多API生疏了,最近准备把它整理一下,写一些实例。java为Socket提供了两个比较重要的类:ServerSocket和Socket。其中ServerSocket用于建立服务器端,但是一旦Socket建立完成,服务器端和客户端就是一样的了。Socket通过InputStream和OutputStream来接受发送数据。第一个服务器很简单,只有一个线程,接受到了客户端请求,就把客户端发送过来的内容,直接写回去。package mxf.study.java.nio;import java.io.IOException;import java.io.InputStream
阅读全文
摘要:写一个简单的多线程的生产者消费者问题,练手。第一版比较简陋,后面改进。package mxf.study.java.thread;/*** 多线程的生产者和消费者问题。* 使用 synchronized 版本*/public class ThreadSync { private static final int size = 10; public static void main(String[] args) throws InterruptedException { final MyBag bag = new MyBag(); //同一个锁对象 Thread writerThre...
阅读全文
摘要:在ReentrantLock中主要定义了static的内部类:Sync。static abstract class Sync extends AbstractQueuedSynchronizer {然后又分别派生出:NonfairSync,FairSync两个类。这两个区别是:NonfairSync中的tryAcquire就看当前(锁)的状态是否是0,如果是则 state=acquires; owner = current; //owner==null, 表示没有锁定,否则表示被owner线程锁定 如果原来owner就是current thread, state +=acquires;一般ac
阅读全文
posted @ 2012-03-05 17:57
海贼王路飞
浙公网安备 33010602011771号