随笔分类 -  多线程

摘要:阻塞队列与Semaphore有些相似,但也不同,阻塞队列是一方存放数据,另一方释放数据,Semaphore通常则是由同一方设置和释放信号量。 ArrayBlockingQueue 只有put方法和take方法才具有阻塞功能 用3个空间的队列来演示阻塞队列的功能和效果。 用两个具有1个空间的队列来实现 阅读全文
posted @ 2017-01-09 16:05 tonglin0325 阅读(309) 评论(0) 推荐(0) 编辑
摘要:CyclicBarrier 适用于:创建一组任务,它们并行地执行任务,然后在进行下一个步骤之前等待,直至所有任务完成。它使得所有的并行任务都将在栅栏处列队,因此可以一致地向前移动。 表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指定地点集合碰面,这就好比整个公司的人员利用周末时间集体郊游一 阅读全文
posted @ 2017-01-09 15:20 tonglin0325 阅读(270) 评论(0) 推荐(0) 编辑
摘要:Semaphore [ˈseməfɔːr] 可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制同时访问资源的线程个数(即允许n个任务同时访问这个资源),例如,实现一个文件允许的并发访问数。 Semaphore实现的功能就类似厕所有5个坑,假如有十个人要上厕所,那么同时能 阅读全文
posted @ 2017-01-09 11:31 tonglin0325 阅读(1760) 评论(0) 推荐(0) 编辑
摘要:Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。 1.重入锁 ReentrantLock 使用ReentrantLock实现交替打印zhangxiaoxiang和l 阅读全文
posted @ 2017-01-08 21:14 tonglin0325 阅读(261) 评论(0) 推荐(0) 编辑
摘要:线程池的概念与Executors类的应用 1.创建固定大小的线程池 2.创建缓存线程池 3.创建单一线程池 关闭线程池 shutdown与shutdownNow的比较 用线程池启动定时器 调用ScheduledExecutorService的schedule方法,返回的ScheduleFuture对 阅读全文
posted @ 2017-01-08 20:16 tonglin0325 阅读(1004) 评论(0) 推荐(0) 编辑
摘要:多个线程访问共享对象和数据的方式 1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,买票系统就可以这么做。 package java_thread; class MyThread_2 implements Runnable{ priv 阅读全文
posted @ 2017-01-07 22:06 tonglin0325 阅读(8789) 评论(0) 推荐(0) 编辑
摘要:DelayQueue是一个基于优先队列(PriorityQueue)实现的阻塞队列(BlockingQueue),队列中的消息的优先级是根据消息的TTL来决定的。 参考:Java延迟队列DelayQueue 使用延迟队列实现定时任务调度器 参考:https://soulmachine.gitbook 阅读全文
posted @ 2016-05-17 23:37 tonglin0325 阅读(1901) 评论(0) 推荐(0) 编辑
摘要:Timer类是一种线程设施,可以用来实现在某一个时间或某一段时间后安排某一个任务执行一次或定期重复执行。 该功能要与TimerTask类配合使用。TimerTask类用来实现由Timer安排的一次或重复执行的某一任务。 import java.text.SimpleDateFormat; impor 阅读全文
posted @ 2016-03-13 11:00 tonglin0325 阅读(408) 评论(0) 推荐(0) 编辑
摘要:多个线程要操作同一资源时就有可能出现资源的同步问题。 同步就是指多个操作在同一个时间段内只能有一个线程进行,其他线程要等待此线程完成之后才可以继续执行。 解决资源共享的同步操作,可以使用同步代码块和同步方法两种方式完成。 <1>同步代码块 所谓代码块就是指使用“{}"括起来的一段代码,根据其位置和声 阅读全文
posted @ 2016-03-08 11:45 tonglin0325 阅读(1793) 评论(0) 推荐(0) 编辑
摘要:Java进程与线程 进程是程序的一次动态执行过程,它经历了从代码加载、执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到最终消亡的过程。 多进程操作系统能同时运行多个进程(程序),由于CPU具备分时机制,所以每个进程都能循环获得自己的CPU时间片。 多线程是指一个进程在执行过程中可以产 阅读全文
posted @ 2016-03-07 21:43 tonglin0325 阅读(443) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示