![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程和并发编程
qianyi168
生命不止,奋斗不息
展开
-
wait, notify 和 notifyAll区别
作用java使用wait(),notify(),notifyAll()来进行线程之间的通讯共同点:都是Java Object对象里面的方法: wait()方法:如果对象调用了wait方法就会使持有该对象的线程把该对象的控制权交出去,然后处于等待状态。 notify()方法:如果对象调用了notify方法就会通知某个正在等待这个对象的控制权的线程可以继续运行。 notifyAll()方法:如果对原创 2017-09-13 14:57:08 · 1317 阅读 · 0 评论 -
多线程--基础概念
最近时间多,准备对多线程的一些知识进行温故,让自己有进一步的提升多线程编程的一些基础概念什么是进程和线程?两者的区别是什么?1.进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。(进程是资源分配的最小单位),比如window任务窗口中的.exe运行程序。 2.线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线原创 2017-09-06 11:49:45 · 285 阅读 · 0 评论 -
多线程-局部变量和成员变量
Java多线程对成员变量和局部变量的影响最近复习了一下Java多线程的一些基础的础知识,这里演示一个java多线程对成员变量和局部变量的Demo对局部变量的操作:/** * Java局部变量和成员变量代码演示 */public class TTTTTT { public static void main(String[] args) { DemoThread原创 2017-09-06 11:14:00 · 8957 阅读 · 2 评论 -
多线程同步机制
为什么要引入同步机制在多线程环境中,可能会出现两个甚至更多的线程试图同时访问同一个资源。必须对这种潜在的资源冲突进行预防。解决方法在线程使用一个资源时为其加入锁机制。访问资源的第一个线程对其加上锁之后,其他线程便不能再使用那个资源,除非被解锁。例子比如银行取钱的例子: 首先有一个银行账户:/** * 银行账户类,里面的余额为1000 */class Bank { private in原创 2017-09-08 23:36:17 · 1823 阅读 · 0 评论 -
多线程同步机制2-深入理解synchronized关键字
上一节讲了关键字synchronized的基本用法。这一节我将对用一个实际的例子来深入多线程同步机制。存取款改造/** * Created by qianyi on 2017/9/9. */public class FetchOperationMoney { public static void main(String[] args) { Bank bank = ne原创 2017-09-09 01:31:40 · 350 阅读 · 0 评论 -
多线程synchronized和synchronized static方法的区别
synchronized static和synchronized 关键字1.synchronized satic 方法,如果是一个方法加上static关键字和synchronized。static一定不属于任何对象,属于一个类。那么它锁的是当前类的对象的class对象。因为Java中无论一个类有多少个对象,这些对象会对应唯一一个Class对象,因为当前线程分别访问了同一个类的两个对象的static,原创 2017-09-10 23:36:59 · 3383 阅读 · 0 评论 -
Java内存模型
1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性 由于计算...转载 2018-03-26 14:11:46 · 236 阅读 · 0 评论 -
Java并发编程-重入锁
重入锁 重入是是对synchronized的一个增强版本,因为synchronized是阻塞的。很容易导致死锁。重入锁在我们日常使用中比较灵活,能够很好的控制,性能比较synchronized好。 重入锁使用java.util.concurrent.locks.ReentrantLock类来实现。其中里面的方法有如下:lock():获取锁,如果无法获取锁,一直尝试获取锁lockInt...原创 2018-03-28 15:18:27 · 421 阅读 · 0 评论