02 2017 档案

摘要:发送到 阅读全文
posted @ 2017-02-26 22:08 heimohe 阅读(146) 评论(0) 推荐(0)
摘要:UDP的Java支持 UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接。实际上,UDP协议只实现了两个功能: 1)在IP协议的基础上添加了端口; 2)对传输过程中可能产生的数据错误进行了检测,并抛弃已经损坏的数据。 Java通过Da 阅读全文
posted @ 2017-02-26 21:47 heimohe 阅读(1093) 评论(0) 推荐(0)
摘要:TCP的Java支持 协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构、交换方式、包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP协议族有IP协议、TCP协议和UDP协议。现在TCP/IP协议族中的主要socket类型为流套接字(使用TCP协议)和数据报套接字(使用UDP协 阅读全文
posted @ 2017-02-26 21:22 heimohe 阅读(220) 评论(0) 推荐(0)
摘要:(转) 这篇文章作者写的真是不错 40个问题汇总 1、多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"知其然","为什么用"才是"知其所以然",只有达到"知其然知其所以然"的程度才可以说是把 阅读全文
posted @ 2017-02-25 21:50 heimohe 阅读(422) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/ns_code/article/details/17465497 Executor框架简介 在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util. 阅读全文
posted @ 2017-02-25 21:38 heimohe 阅读(322) 评论(0) 推荐(0)
摘要:生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者取走数据。 这里实现如下情况的生产--消费模型: 生产者不断交替地生产两组数据“姓名--1 --> 内容--1”,“姓名--2--> 内容--2”,消费者不断交替地取得这两组数据,这 阅读全文
posted @ 2017-02-25 21:27 heimohe 阅读(3939) 评论(0) 推荐(0)
摘要:在Java中,可以通过配合调用Object对象的wait()方法和notify()方法或notifyAll()方法来实现线程间的通信。在线程中调用wait()方法,将阻塞等待其他线程的通知(其他线程调用notify()方法或notifyAll()方法),在线程中调用notify()方法或notify 阅读全文
posted @ 2017-02-25 21:19 heimohe 阅读(1802) 评论(1) 推荐(0)
摘要:当线程需要同时持有多个锁时,有可能产生死锁。考虑如下情形: 线程A当前持有互斥所锁lock1,线程B当前持有互斥锁lock2。接下来,当线程A仍然持有lock1时,它试图获取lock2,因为线程B正持有lock2,因此线程A会阻塞等待线程B对lock2的释放。如果此时线程B在持有lock2的时候,也 阅读全文
posted @ 2017-02-25 21:11 heimohe 阅读(352) 评论(0) 推荐(0)
摘要:转自: http://blog.csdn.net/ns_code/article/details/17200509 在集合API中,最初设计的Vector和Hashtable是多线程安全的。例如:对于Vector来说,用来添加和删除元素的方法是同步的。如果只有一个线程与Vector的实例交互,那么, 阅读全文
posted @ 2017-02-25 21:05 heimohe 阅读(382) 评论(0) 推荐(0)
摘要:在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确保在某一时刻,方法内只允许有一个线程。 采用synchronized修饰符实现的同步机制叫做互斥锁机 阅读全文
posted @ 2017-02-25 21:00 heimohe 阅读(1450) 评论(0) 推荐(0)
摘要:(1)、定义: (2)、参数说明: RejectedExecutionHandler 添加任务失败后的执行策略,你可以调用线程池的 setRejectedExecutionHandler() 方法,用自定义的 RejectedExecutionHandler 对象替换现有的策略。 (3)、具体流程如 阅读全文
posted @ 2017-02-25 20:58 heimohe 阅读(319) 评论(0) 推荐(0)
摘要:上图,不说话: 1、新建状态(New):新创建了一个线程对象。 2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。 3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。 阅读全文
posted @ 2017-02-25 20:43 heimohe 阅读(3504) 评论(0) 推荐(0)
摘要:volatile用处说明 首先明确一点: 假如有两个线程分别读写volatile变量时,线程A写入了某volatile变量,线程B在读取该volatile变量时,便能看到线程A对该volatile变量的写入操作,关键在这里,它不仅会看到对该volatile变量的写入操作,A线程在写volatile变 阅读全文
posted @ 2017-02-25 20:37 heimohe 阅读(155) 评论(0) 推荐(0)
摘要:守护线程 Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用户线程即运行在前台的线程,而守护线程是运行在后台的线程。 守护线程作用是为其他前台线程的运行提供便利服务,而且仅在普通、非守护线程仍然运行时才需要,比如垃圾回收线程就是一个守护线程。当VM检 阅读全文
posted @ 2017-02-24 17:54 heimohe 阅读(2859) 评论(0) 推荐(0)
摘要:挂起和恢复线程 Thread 的API中包含两个被淘汰的方法,它们用于临时挂起和重启某个线程,这些方法已经被淘汰,因为它们是不安全的,不稳定的。如果在不合适的时候挂起线程(比如,锁定共享资源时),此时便可能会发生死锁条件——其他线程在等待该线程释放锁,但该线程却被挂起了,便会发生死锁。另外,在长时间 阅读全文
posted @ 2017-02-24 17:47 heimohe 阅读(12300) 评论(0) 推荐(1)
摘要:一、使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回。这里需要注意的是,如果只是单纯的调用interrupt()方法,线程并没有实际被中断,会继续往下执 阅读全文
posted @ 2017-02-24 16:50 heimohe 阅读(4776) 评论(0) 推荐(0)
摘要:下面以典型的买票程序(基本都是以这个为例子)为例,来说明二者的区别。 首先通过继承Thread类实现,代码如下: 执行结果如下: 从结果中可以看出,每个线程单独卖了5张票,即独立地完成了买票的任务,但实际应用中,比如火车站售票,需要多个线程去共同完成任务,在本例中,即多个线程共同买5张票。 通过实现 阅读全文
posted @ 2017-02-24 15:26 heimohe 阅读(6151) 评论(2) 推荐(1)
摘要:线程是一个动态执行的过程,它也有一个从产生到死亡的过程。 下图显示了一个线程完整的生命周期。 新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。 就绪状态: 当线程对象调用了start()方法之 阅读全文
posted @ 2017-02-24 15:11 heimohe 阅读(700) 评论(0) 推荐(0)
摘要:Java中实现多线程有两种方法:继承Thread类、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势: 1、可以避免由于Java的单继承特性而带来的局限; 2、增强程序的健壮性,代码能够被多个线程 阅读全文
posted @ 2017-02-24 14:58 heimohe 阅读(223) 评论(0) 推荐(0)