JavaSE---多线程---扩展
1、线程的类型
1.1 用户线程

1.2 内核线程


2、java线程
java线程的创建依赖于系统内核,通过JVM调用系统库创建内核线程;
内核线程与java-Thread是1:1的映射关系;
3、线程池
3.1 什么时候使用线程池?
a,单个任务处理的时间比较短;
b,需要处理的任务数量比较大;

4、多线程并发

5、多线程并发产生不安全的原因

stock原来为5;
3个线程(各线程间互不可见)分别从主存中获取stock=5,然后各自执行stock--;
3个线程都执行成功stock=4,库存实际减了3,但各个线程都向主存回写stock=4,导致stock只减了一个;
造成数据不安全;
6、Synchronized实现线程同步
package com.an.lock;
public class Test {
private static Object object=new Object();
/**
* 库存操作
*/
public void downStock(){
synchronized (object){
//1、从数据库查询库存
//2、执行stock--
//3、执行SQL修改库存
}
}
}

【总结】:
1.1 synchronized底层使用JVM的lock、unlock操作;
1.2 当某一个线程获得对同步监视器的锁定时,其他线程进入阻塞状态;
当某个线程对同步监视器释放锁,其他线程将被唤醒,去争夺锁;
7、Lock实现线程同步
JavaSE---多线程---扩展的更多相关文章
- Windows下PHP多线程扩展pthreads的安装
pthreads扩展安装步骤 1.查看phpinfo() 获取PHP版本号及位数(x86表示32位,x64表示64位).编译器版本.PHP配置文件加载所在位置等.如下图所示: 2.pthreads扩展 ...
- windows下安装php真正的多线程扩展pthreads教程
扩展地址:http://docs.php.net/manual/zh/book.pthreads.php 注意事项php5.3或以上,且为线程安全版本.apache和php使用的编译器必须一致.通过p ...
- php安装threads多线程扩展
php5.3或以上,且为线程安全版本.apache和php使用的编译器必须一致.通过phpinfo()查看Thread Safety为enabled则为线程安全版.通过phpinfo()查看Compi ...
- PHP安装pthreads多线程扩展教程[windows篇]
from:http://blog.csdn.net/aoyoo111/article/details/19020161 一.判断PHP是ts还是nts版 通过phpinfo(); 查看其中的 Thre ...
- JavaSE——多线程实现的两种方式
Thread类: 创建新执行线程有两种方法. 一种方法是将类声明为 Thread 的子类.该子类应重写 Thread 类的 run 方法.接下来可以分配并启动该子类的实例.例如,计算大于某一规定值的质 ...
- JavaSE——多线程
进程和线程: 进程是指运行中的应用程序,每一个进程都有自己独立的内存空间.一个应用程序可以启动多个进程. 线程是指进程中的一个执行流程,有时也称为执行情景. 线程和进程的主要区别在于:每个进程都需要操 ...
- [javaSE] 多线程(守护线程)
我们一般使用多线程,都是while的死循环,想要结束线程,只需退出死循环即可 当线程中调用了sleep()方法或者wait()方法,当前的线程就会进入冻结状态,这个线程就结束不了 调用Thread对象 ...
- [javaSE] 多线程(售票例子)
需求:简单的买票程序,多个窗口卖票,多线程 定义一个类Ticket实现Runnable接口, 定义成员属性int类型的票数nums 实现run()方法,run方法中 while(true)的死循环,打 ...
- windows下xampp安装PHP的pthreads多线程扩展
我的运行环境: 系统:windows10 ,64位 PHP:5.6.8 TS,VC11 ,32位 Apache: 2.0 我安装的是xampp集成环境 pthreads的windows扩展文件下载地址 ...
- Windows环境下PHP安装pthreads多线程扩展
一.判断PHP是ts还是nts版 通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版. ...
随机推荐
- 用ASP实现文件下载
<% '**************************************************************'**使用方法: ...
- Gradle查看Project中的所有 Task
查看Project中所有的Task:$ gradle tasks 查看Project中所有的properties:$ gradle properties 如: 参照了: https://www.jia ...
- pycharm项目代码上传远程centos服务器
pycharm项目代码上传远程centos服务器 在工作中,我们经常会遇到如下情况,在windows系统下的pycharm中开发项目,但是需要在linux服务器上部署和运行我们的项目.那么我们的项目是 ...
- Django 安装、创建第一个项目
一.版本 Django 版本对应的 Python 版本: Django 版本 Python 版本 1.8 2.7, 3.2 , 3.3, 3.4, 3.5 1.9, 1.10 2.7, 3.4, ...
- php用什么软件编程
准备好好学习学习PHP了吗?那么你首先应该考虑用什么开发工具(IDE).市面上有很多这类工具,收费的有,免费的也有,选择起来并不轻松. 如果你说PHP编程用基础的文本编辑软件就可以了,比如用记事本.是 ...
- 04 - Jmeter4.x聚合报告,测试报告以及测试报告用法于解析
聚合报告 添加方式 Thread Group → add → Listener → Aggregate Report 内容解析 lable: 指代当前Samples ...
- JavaScript PriorityQueue
function PriorityQueue() { var items = []; function QueueElement(element, priority) { this.element = ...
- 《JAVA设计模式》之策略模式(Strategy)
在阎宏博士的<JAVA与模式>一书中开头是这样描述策略(Strategy)模式的: 策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它 ...
- 洛谷 P5019 铺设道路 & [NOIP2018提高组](贪心)
题目链接 https://www.luogu.org/problem/P5019 解题思路 一道典型的贪心题. 假设从左往右填坑,如果第i个深与第i+1个,那么第i+1个就不需要额外填: 如果第i+1 ...
- 2、单线性变量的回归(Linear Regression with One Variable)
2.1 模型表示 我们通过一个例子来开始:这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格.在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集.比方说,如果你 ...