一、死锁是什么?举个例子:两个人一起吃饭,每个人都拿了一只筷子,双方都在等待对方将筷子让给自己,结果两个人都吃不了饭。这时候死锁就形成了。假设有两个线程,互相等待对方释放占有的锁,但是释放锁的条件又不可能形成,这时候死锁就形成了。还是买票的问题,有的时候时会发生死锁的,将以前的代码改动一下,将会产生...
分类:
编程语言 时间:
2014-10-02 18:14:33
阅读次数:
264
一、问题的提出以买票系统为例: 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
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/27250059普通情况下,我们使用Runnable作为主要的任务表示形式,可是Runnable是一种有非常大局限的抽象,run方法中仅仅能记录日志,打印,或者把数据汇总入某个容器(一...
分类:
编程语言 时间:
2014-09-28 21:34:05
阅读次数:
211
优先级>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
ava中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行。共同点:1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而...
分类:
编程语言 时间:
2014-09-26 20:15:08
阅读次数:
165