![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
文章平均质量分 57
想吃一口西多
这个作者很懒,什么都没留下…
展开
-
高并发下线程安全的单例模式
目录(?)[+]在所有的设计模式中,单例模式是我们在项目开发中最为常见的设计模式之一,而单例模式有很多种实现方式,你是否都了解呢?高并发下如何保证单例模式的线程安全性呢?如何保证序列化后的单例对象在反序列化后任然是单例的呢?这些问题在看了本文之后都会一一的告诉你答案,赶快来阅读吧!什么是单例模式?在文章开始之前我们还是有必要介绍一下什么是单例模式。单例模式是为确保一个类只有一个实例,并为整个系统提...转载 2018-04-01 15:50:43 · 95 阅读 · 0 评论 -
线程不安全
背景:线程不安全-sleep(模拟网络延迟)后多线程并发访问同一个资源方法1:同步代码块语法:synchronized(同步锁){ 需要同步操作的代码}同步锁:为了保证每个线程都能正常执行原子操作(吃苹果和数量减一为一体就叫原子操作),Java引入了线程同步机制同步监听对象/同步锁/同步监听器/互斥锁对象的同步锁只是一个概念,可以想象为在对象上标记了一个锁Java程序允许使用任何对象作为同步...原创 2018-04-01 20:34:34 · 141 阅读 · 0 评论 -
定时器和线程组
在JDK的java.util包中提供了Timer类,可以定时执行特定的任务TimerTask类表示定时器执行的某一项任务常用方法:schedule(TimerTask task,long delay,long period);schedule(TimerTask task,long delay);---------------------------------------------------...原创 2018-04-08 22:13:15 · 187 阅读 · 0 评论 -
线程优先级
每个线程都有优先级,优先级的高低只和线程获得执行机会的次数多少有关,优先级越高就一定先执行,哪个线程先执行取决于CPU的调度。MAX_PRIORITY=10,最高优先级MIN_PRIORITY=1,最低优先级NORM_PRIORITY=5,默认优先级------------------------------------------------------int getPriority():返回线...原创 2018-04-08 20:27:42 · 125 阅读 · 0 评论 -
后台线程
在后台运行的线程,其目的是为其他线程提供服务,也称为“守护线程”。JVM的垃圾回收线程就是典型的后台线程。特点:若所有的前台线程都死亡,后台线程自动死亡,前台线程没有结束,后台线程是不会结束的。测试线程对象是否为后台线程:使用thread.isDaemon()。前台线程创建的线程默认是前台线程,可以通过setDaemon(true)方法设置为后台线程,并且当且仅当后台线程创建新线程时,新线程是后台...原创 2018-04-08 19:34:05 · 340 阅读 · 0 评论 -
联合线程
线程的join方法表示一个线程等待另一个线程完成后才执行。join方法被调用之后,线程对象处于阻塞状态,有人也把这种方式称为联合线程,就是说把当前线程和当前线程所在的线程联合成一个线程。class JoinThread extends Thread{ public void run() { for(int i=0;i<=20;i++) { System.out.println(...原创 2018-04-08 19:03:55 · 278 阅读 · 0 评论 -
三个线程吃苹果
class Apple implements Runnable{ private int num=50; public void run() { for(int i=0;i<50;i++) { if(num>0) { System.out.println(Thread.currentThread().getName()+"吃了编号为"+num--+"的苹果");...原创 2018-03-31 22:34:17 · 334 阅读 · 0 评论 -
启用匿名内部类创建并启用线程
public class AnonyousInnerClassDemo { public static void main(String[] args) { for(int i=0;i<50;i++) { System.out.println("打游戏"+i); if(i==10) { new Thread(){ public void run() {...原创 2018-03-31 21:20:03 · 246 阅读 · 0 评论 -
进程&线程
多任务系统,该系统可以运行多个进程,一个进程也可以执行多个任务,一个进程可以包含多个线程。进程和线程的区别:进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立的,至少有一个线程。线程:堆空间是共享的,栈空间是独立的,线程消耗的资源也比进程小,相互之间可以影响的,又称为轻型进程或者进程元。Java程序的进程至少包含主线程和垃圾回收线程(后台线程)(java支持多线程是个亮点呢)(软...原创 2018-03-30 23:49:02 · 101 阅读 · 0 评论 -
线程通信-使用Lock和Condition接口
wait和notify方法,只能被同步监听对象来调用Lock机制没有同步锁,所以不能调用解决方案:Java5中提供了Lock机制的同时提供了处理Lock机制的通信控制的Condition接口从Java5开始,可以:1):使用Lock机制取代synchronized代码块和synchronized方法2):使用Condition接口对象的await,signal,signalAll方法取代Objec...原创 2018-04-07 21:17:55 · 205 阅读 · 0 评论 -
并行和并发
并行和并发是既相似又有区别(微观概念):并行:指两个或多个事件在同一时刻点发生并发:指两个或多个事件在同一时间段内发生在操作系统中,在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单CPU系统中,每一时刻却只能有一道程序执行(时间片),故微观上这些程序只能是分时交替执行。如果计算机有多个CPU,那这些并发执行的程序就可以被分配到多个处理器上,实现多任务并行执行。单核处理器的...原创 2018-03-30 10:28:34 · 136 阅读 · 0 评论 -
线程通信--生产者消费者案例wait,notify解决
public class ShareResource { private String name; private String gender; private boolean isEmpty=true; //表示共享资源对象是否为空的状态 //存储数据 synchronized public void push(String name,String gender) { try {...原创 2018-04-07 11:36:31 · 99 阅读 · 0 评论