java并发与多线程
岁月无痕study
这个作者很懒,什么都没留下…
展开
-
java 线程start()和run()方法的区别
Thread类中start()和run()方法的区别是: start(): 程序调用Thread类的start()方法来启动一个线程, 启动后此线程是处于就绪状态, 并没有运行。然后通过此Thread类调用该Runnable对象的run()方法来让此线程运行。(一般都会在自己程序中重写run方法来实现自己的功能。)start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的原创 2016-09-09 10:14:17 · 352 阅读 · 0 评论 -
二、Java并发机制的底层实现原理
Java代码编译后变成java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,java中所使用的并发机制依赖于JVM的实现和CPU的执行。2.1 volatile的应用 在多线程并发编程中,synchronized和volatile都扮演重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证共享变量的“可见性”。可见原创 2017-06-07 14:45:20 · 834 阅读 · 1 评论 -
java多线程实现:Runnable接口
直接上例子:package com.lyt.study.controller;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;/** * Created by lyt on 2016/9/8 0008. */class SaleTicketThread原创 2016-09-08 17:12:35 · 604 阅读 · 0 评论 -
Java并发编程:Thread类的使用
今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 以下是本文的目录大纲: 一.线程的状态 二.上下文切换 三.Thread类中的方法一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于后面对Thread类中的方法的理解。 线程从创转载 2017-06-05 16:54:02 · 300 阅读 · 0 评论 -
java中的synchronized(同步代码块和同步方法的区别)
问题的由来:看到这样一个面试题://下列两个方法有什么区别public synchronized void method1(){}public void method2(){ synchronized (obj){}}synchronized用于解决同步问题,当有多条线程同时访问共享数据时,如果不进行同步,就会发生错误,Java提供的解决方案是:只要将操作共享数据的语句在某一时段让一个线程执转载 2017-04-20 17:21:15 · 643 阅读 · 0 评论 -
Java线程:概念与原理
HashMap详讲HashMap详讲操作系统中线程和进程的概念Java中的线程Java线程创建与启动Java线程线程栈模型与线程的变量Java线程线程状态的转换Java线程线程的同步与锁Java线程线程的交互Java线程线程的调度-休眠Java线程线程的调度-优先级Java线程线程的调度-让步Java线程线程的调度-合并Java线程线程的调度-守护线程Java线程线程的同步转载 2017-03-29 21:10:42 · 4715 阅读 · 0 评论 -
事务特性和并发带来的问题
1、什么是事务 事务是并发控制的单位,一系列操作组成的工作单元,该工作单元内的操作是不可分割的,也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。 事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。 2、事务的 ACI原创 2016-12-19 13:02:38 · 7250 阅读 · 2 评论 -
并发与并行的区别
3、操作符 3.1 略 3.2 使用java操作符 Java操作符 + - * / ,这些基本操作符作用于操作数,生成一个新值。几乎所有的操作符都只能操作基本类型,例外的操作符是= 、== 和!=,这些操作符能操作所有的对象,除此之外,String类支持操作符+和+=。 3.3优先级 当一个表达式中存在多个操作符时,操作符的优先级就决定了各部分的计算顺序。 Java对计算顺序做了特别的规定原创 2016-12-05 17:56:44 · 2961 阅读 · 2 评论 -
web项目没有main方法,怎么运行的?
首先理解一下main方法:你的java程序要运行,总要有一个起点,所以我们就约定,从main方法这里开始一行一行执行,java程序跑起来,一般是通过主类的main方法启动的。web容器是作为web程序的一部分存在的,由web容器启动你自己写的代码,像void main()之类的,测试的时候有时候会用到,其他基本不用。tomcat的主类是BootStrap类,也是以此类的main方法作为入口启动的,w原创 2016-09-08 11:21:42 · 15227 阅读 · 0 评论 -
多线程Thread类和Runnable接口资源共享问题分析
最近在看多线程时,一直迷茫为什么继承Thread类的多线程不能实现资源共享,但是实现Runnable接口的多线程却能实现资源共享,先看一段经典的卖票多线程,将程序修改一下,使运行结果直观。 首先是实现Runnable接口来实现多线程:public class TicketSaleMain implements Runnable{ private int num = 5;原创 2016-09-09 13:41:41 · 1715 阅读 · 0 评论 -
Java 多线程分段下载原理分析和实现
多线程下载介绍 多线程下载技术是很常见的一种下载方案,这种方式充分利用了多线程的优势,在同一时间段内通过多个线程发起下载请求,将需要下载的数据分割成多个部分,每一个线程只负责下载其中一个部分,然后将下载后的数据组装成完整的数据文件,这样便大大加快了下载效率。常见的下载器,迅雷,QQ旋风等都采用了这种技术。实现方案原理很清楚,但是其中涉及到两个关键问题:需要请求的数据如何分段。 分段下载的数据如何转载 2017-07-14 13:27:32 · 6457 阅读 · 8 评论