#新线程

java 多线程 6 : 同步锁(Lock)

java5开始可以显示定义同步锁对象来实现同步,这种机制下,同步锁由对象充当Lock比同步代码块和同步方法更加灵活在实现线程安全的机制中,比较常用的是ReentrantLock(可重入锁)。使用该Lock对象可以显示的加锁,释放锁ReentrantLock代码格式如下:classX{//定义锁对象privatefina...
代码星球 ·2020-08-01

java 多线程 5 : 同步方法

使用synchronized关键字来修饰某个方法,该方法被称为同步方法。对于synchronized修饰的实例方法(非static方法),无需显示指定同步监视器,同步方法的同步监视器是this,也就是调用该方法的对象。通过同步方法可以非常方便的实现线程安全的类,线程安全的类具有如下特征:  该类的对象可以被多个线程对象...
代码星球 ·2020-08-01

java 多线程 4 : 同步代码块

线程安全问题:多线程访问同一数据,容易出现线程安全问题经典问题:银行取钱,1.用户名密码登陆,2.输入取款金额,3.判断账户余额是否大于取款金额,4.如果大于,取款成功,如果小于,取款失败。publicclassAccount{privateStringaccount;//账号privatedoublebalance;...
代码星球 ·2020-08-01

java 多线程 3 : 控制线程

join线程:    publicclassJoinThreadextendsThread{publicJoinThread(Stringname){super(name);}publicvoidrun(){for(inti=0;i<100;i++){System.out.println(getName()+""...
代码星球 ·2020-08-01

java 多线程 2 : 线程的生命周期

线程得生命周期:  当线程被创建并且启动之后,并不是一启动就进入执行状态,也不是一直处于执行状态,在线程得生命周期中,他要经过创建(New),就绪(Runnable),运行(Running),阻塞(Blocked),和死亡(Dead)。线程启动以后,不能一直霸占CPU独自运行,CPU需  要在多条线程之间切换,线程状态...
代码星球 ·2020-08-01

java 多线程 1 : 基础

进程和线程:  一个程序运行后至少有一个进程,一个进程里面可以包含多个线程,但是至少要包含一个线程。线程的创建和启动:方式1:继承Thread类创建线程类,步骤     1.定义Thread类的子类,重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此run()方法也被称为线程执行体   ...
代码星球 ·2020-08-01

Java多线程21:多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask

CyclicBarrier接着讲多线程下的其他组件,第一个要讲的就是CyclicBarrier。CyclicBarrier从字面理解是指循环屏障,它可以协同多个线程,让多个线程在这个屏障前等待,直到所有线程都达到了这个屏障时,再一起继续执行后面的动作。看一下CyclicBarrier的使用实例:publicstatic...

Java多线程20:多线程下的其他组件之CountDownLatch、Semaphore、Exchanger

前言在多线程环境下,JDK给开发者提供了许多的组件供用户使用(主要在java.util.concurrent下),使得用户不需要再去关心在具体场景下要如何写出同时兼顾线程安全性与高效率的代码。之前讲过的线程池、BlockingQueue都是在java.util.concurrent下的组件,Timer虽然不在java....

Java多线程19:定时器Timer

前言定时/计划功能在Java应用的各个领域都使用得非常多,比方说Web层面,可能一个项目要定时采集话单、定时更新某些缓存、定时清理一批不活跃用户等等。定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程方式进行处理,所以它和多线程技术关联还是相当大的。那和ThreadLocal一样,还是先讲原理...
代码星球 ·2020-07-29

Java多线程18:线程池

使用线程池与不使用线程池的差别先来看一下使用线程池与不使用线程池的差别,第一段代码是使用线程池的:publicstaticvoidmain(String[]args){longstartTime=System.currentTimeMillis();finalList<Integer>l=newLinked...
代码星球 ·2020-07-29

Java多线程17:中断机制

概述之前讲解Thread类中方法的时候,interrupt()、interrupted()、isInterrupted()三个方法没有讲得很清楚,只是提了一下。现在把这三个方法同一放到这里来讲,因为这三个方法都涉及到多线程的一个知识点----中断机制。Java没有提供一种安全、直接的方法来停止某个线程,而是提供了中断机...
代码星球 ·2020-07-29

Java多线程16:线程组

线程组可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示:线程组的作用是:可以批量管理线程或线程组对象,有效地对线程或线程组对象进行组织。 线程关联线程组:1级关联所谓1级关联就是父对象中有子对象,但并不创建孙对象。这种情况在开...
代码星球 ·2020-07-29

Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型

Queue是什么队列,是一种数据结构。除了优先级队列和LIFO队列外,队列都是以FIFO(先进先出)的方式对各个元素进行排序的。无论使用哪种排序方式,队列的头都是调用remove()或poll()移除元素的。在FIFO队列中,所有新元素都插入队列的末尾。 Queue中的方法Queue中的方法不难理解,6个,每...

Java多线程14:生产者/消费者模型

什么是生产者/消费者模型一种重要的模型,基于等待/通知机制。生产者/消费者模型描述的是有一块缓冲区作为仓库,生产者可将产品放入仓库,消费者可以从仓库中取出产品,生产者/消费者模型关注的是以下几个点:生产者生产的时候消费者不能消费消费者消费的时候生产者不能生产缓冲区空时消费者不能消费缓冲区满时生产者不能生产生产者/模型作...

Java多线程13:读写锁和两种同步方式的对比

读写锁ReentrantReadWriteLock概述大型网站中很重要的一块内容就是数据的读写,ReentrantLock虽然具有完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务),但是效率非常低。所以在JDK中提供了一种读写锁ReentrantReadWriteLock,使用它可以加快运行效率。读...
首页上一页...4041424344...下一页尾页