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版. ...
随机推荐
- Python_008(文件操作)
一.文件操作 1.只读操作 f = open("taibai.txt",mode = "r",encoding = "utf-8" s = ...
- Oracle数据库字符集问题
Oracle数据库的字符集问题,也涉及作为服务器操作系统的CentOS或者Windows的字符集与Oracle字符集之间的关联关系Oracle的字符集,这个问题的提出是因为两个原因:一是遇到一个DMP ...
- 《数据结构与算法(C语言版)》严蔚敏 | 第四章课本案例
//二叉树的顺序存储表示 #define MAXTSIZE 100 typedef TElemtype SqBiTree[MAXTSIZE]; SqBiTree bt; //二叉树的二叉链表存储表示 ...
- DataScope v1.0 多功能串口虚拟示波器使用介绍
DataScope v1.0 特性 1.无需安装,启动即用;2.支持同时刷新多达10个通道的单精度浮点型数据;3.支持多种格式的通道数据导入.导出及回放;4.支持全屏浏览;5.支持图表数据统计.测量及 ...
- 求 主板型号 945GME - ICH7M/U 支持的最大内存,以及内存型号 10
https://zhidao.baidu.com/question/400302290.html 求 主板型号 945GME - ICH7M/U 支持的最大内存,以及内存型号 10 主板型号 明基 J ...
- Delphi IdHttp组件+IdHttpServer组件实现文件下载服务
http://blog.csdn.net/xxkku521/article/details/16864759 Delphi IdHttp组件+IdHttpServer组件实现文件下载服务 2013- ...
- DbWrench001--简介
DbWrench--简介 mac下载地址:http://www.dbwrench.com/ DbWrench 工具等价于powerdesigner 均为数据库原型设计工具 DbWrench 详细介绍 ...
- Git007--删除文件
Git--删除文件 本文来自于:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/ ...
- Pair Testing
All-Pairs Testing is a test design method to deal with the combinatorics problem of defining test ca ...
- [Linux] 011 其它权限管理命令
1. 权限管理命令:chown 命令名称:chown 命令英文原意:change file ownership 命令所在路径:/bin/chown 执行权限:所有用户 语法:chown [用户] [文 ...