Thread和RunnableRunnable接口可以避免继承自Thread类的单继承的局限性。Runnable的代码可以被多个线程(Thread的实例)所共享,适合于多个线程共享资源(其实就是持有同一个runnable实例)的情况。以火车站买票为例,分别以继承Thread类和实现Runnable接...
分类:
编程语言 时间:
2015-05-24 08:50:14
阅读次数:
254
概念:
1.线程:程序中单独顺序的控制流
线程本身依靠程序进行运行
线程是程序中的顺序控制流,只能使用分配给程序的资源和环境
2.进程:执行中的程序
一个进程可以包含一个或多个线程
一个进程至少要包含一个线程
3.单线程:程序中只存在一个线程,实际上主方法就是一个主线程
4.多线程:多线程是一个程序中运行多个任务
多线程的目的是更好的使用CPU资源...
分类:
编程语言 时间:
2015-05-23 21:25:16
阅读次数:
183
生产者消费者模式是并发、多线程编程中经典的设计模式,生产者和消费者通过分离的执行工作解耦,简化了开发模式,生产者和消费者可以以不同的速度生产和消费数据。
真实世界中的生产者消费者模式
生产者和消费者模式在生活当中随处可见,它描述的是协调与协作的关系。比如一个人正在准备食物(生产者),而另一个人正在吃(消费者),他们使用一个共用的桌子用于放置盘子和取走盘子,生产者准备食物,如...
分类:
编程语言 时间:
2015-05-14 18:46:06
阅读次数:
328
JAVA中创建线程的两种方式:继承Thread或实现Runnable接口。
1 继承Thread类,重写run方法:
/**
* 实现线程的第一种方式 :继承Thread
* 实现数据共享需要设置属性为静态
* @author qhyuan1992
*
*/
class MyThread extends Thread{
private int count;// static
pu...
分类:
编程语言 时间:
2015-05-14 18:41:37
阅读次数:
116
一、多线程
1、操作系统有两个容易混淆的概念,进程和线程。
进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。
线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。同一进程中的线程共用相同的地址空间...
分类:
编程语言 时间:
2015-05-03 17:32:55
阅读次数:
259
SynchronizedJava中每个对象都有一个内置锁,当程序运行到非静态的synchronized同步方法上时,自动获得与正在执行代码类的当前实例(this实例)有关的锁。获得一个对象的锁也称为获取锁、锁定对象、在对象上锁定或在对象上同步。当程序运行到synchronized同步方法或代码块时才该对象锁才起作用。
一个对象只有一个锁。所以,如果一个线程获得该锁,就没有其他线程可以获得锁,直到第一...
分类:
编程语言 时间:
2015-04-30 20:11:06
阅读次数:
147
这篇文章我主要想总结两个内容,第一是关于锁的,第二是关于非阻塞同步CompareAndSwap的。这两个内容在Java多线程并发中都很重要,下面就直接进入主题吧。锁要提到并发,自然就要提到锁,通过使用锁,使得多线程的并发控制变得十分简单。但是付出的代价也很高,只有获取到锁的线程才能够执行代码,而其他线程必须挂起等待直到锁被释放,这期间它不能做任何事情。并且,在线程进行切换的过程中,即一个线程释放锁,...
分类:
其他好文 时间:
2015-04-26 10:55:08
阅读次数:
146
??
1、并发和并行的区别
可由上图形象指出两者的区别:
1)定义:
并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
并行:在操作系统中,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。
来个比喻:并发和并行的区别就是一个人同时吃三个馒...
分类:
编程语言 时间:
2015-04-17 11:26:29
阅读次数:
171
web应用中java多线程并发处理业务时,容易抛出NullPointerException。原因:线程中的Spring Bean没有被注入。web容器在启动时,没有提前将线程中的bean注入,在线程启动之前,web容器是无法感知的。解决方案:方法一、在声明成员变量的时候,将其定义为static的。(...
分类:
编程语言 时间:
2015-04-15 23:01:34
阅读次数:
191
记得第一次做java的题的时候,看到“写出生产者消费者问题”,还以为是和工厂模式有关系。现在想想也是被雷倒了。
java的生产者消费者问题其实是讲多线程并发操作同一资源缓冲区,当资源缓冲区满的时候,线程继续添加数据,则应该使其等待,有空间时再发消息通知;当资源缓冲区没有资源,线程继续取数据时,应该使其等待,有资源是再发消息通知;...
分类:
编程语言 时间:
2015-04-11 18:00:17
阅读次数:
147