这两天复习java线程时,把java里面的线程基本知识点与jdk1.5以后新添加的一些类的使用都了解了一下,借用生产者消费者的问题来将他们实践一下。题目:(题目在csdn一大牛的空间找的) 生产者-消费者模式,这个食堂中只有1张桌子,同时最多放10个盘子,现在有4个厨师做菜,每做好一盘就往桌子上放(...
分类:
编程语言 时间:
2014-10-03 03:08:33
阅读次数:
416
一、死锁是什么?举个例子:两个人一起吃饭,每个人都拿了一只筷子,双方都在等待对方将筷子让给自己,结果两个人都吃不了饭。这时候死锁就形成了。假设有两个线程,互相等待对方释放占有的锁,但是释放锁的条件又不可能形成,这时候死锁就形成了。还是买票的问题,有的时候时会发生死锁的,将以前的代码改动一下,将会产生...
分类:
编程语言 时间:
2014-10-02 18:14:33
阅读次数:
264
java多线程synchronized、volatile
分类:
编程语言 时间:
2014-10-02 18:06:13
阅读次数:
334
一、问题的提出以买票系统为例: 1 class Ticket implements Runnable 2 { 3 public int sum=10; 4 public void run() 5 { 6 while(true) 7 { 8 ...
分类:
编程语言 时间:
2014-10-02 01:57:11
阅读次数:
331
一、多线程概述一个进程中至少有一个线程,每一个线程都有自己运行的内容,这个内容可以称为线程要执行的任务。不能没一个问题都使用多线程,能使用单线程解决的问题就不要使用多线程解决。使用多线程的弊端:一旦开启了多个程序,电脑就会变卡,原因就是每个程序被CPU处理的几率变小了。最明显的例子就是如果在复制文件...
分类:
编程语言 时间:
2014-10-01 23:49:01
阅读次数:
355
阻塞队列:
1)BlockingQueue该接口提供了:
add()/remove() 如果当队列没有数据,从队列中取数据;或者队列中数据已满,
向队列中添加数据;则会抛出异常.
put()/take() 如果当队列没有数据,从队列中取数据;或者队列中数据已满,
向队列中添加数据;则会形成阻塞.
offer()/poll() 会给调用者返回特殊的值,开发者可以通过这些值做相应的处理
...
分类:
编程语言 时间:
2014-09-29 20:43:13
阅读次数:
297
设计四个线程,其中共两个线程每次对j增加1,另外两个线程每次对j减少1。循环100次,写出程序。...
分类:
编程语言 时间:
2014-09-29 18:44:41
阅读次数:
180
优先级>1~10
线程调度
OS:
抢占式>更高优先级的线程会取代当前运行的线程
非抢占式>即使存在更高优先的线程,也不会取代当前运行的线程
JVM:
绿色线程:最简单的线程处理模型.对os来说只有一个进程一个线程,因此
jvm必须维护该创建线程的原始信息等..
守护线程/非守护线程:
在创建线程的父线程死亡时,守护线程会自动结束,而非守护线程
则不会.
...
分类:
编程语言 时间:
2014-09-28 12:11:41
阅读次数:
154
1. 后台线程: 如果在某个线程运行之前调用了setDaemon方法,则该线程就变为后台线程。 对java程序来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程只有后台线程在运行,这个进程就会结束。public class TestSetDaemon { public stat...
分类:
编程语言 时间:
2014-09-27 17:04:30
阅读次数:
194
前面我们已经学习了使用ThreadPoolExecutor类来实现自动创建和运行线程。但是na'xie...
分类:
编程语言 时间:
2014-09-26 23:09:18
阅读次数:
312