java多线程
qianmacao
我就是我
展开
-
java线程安全理解
如果你的代码所在的进程有多个线程在运行,二你的代码可能同时被这多个线程同时访问,如果每次运行的结果和单线程运行的结果一样,并且其他变量也是正确的,那么你的线程就是安全的。反之,如果每次运行的结果都是不确定的那么就是非线程安全的。如何做到线程安全:四种方式 sychronized关键字 1. sychronized method(){} 2. sych原创 2014-12-17 16:43:02 · 709 阅读 · 0 评论 -
java多线程的发展简史
诞生Java的基因来自于1990年12月Sun公司的一个内部项目,目标设备正是家用电器,但是C++的可移植性和API的易用性都让程序员反感。旨在解决这样的问题,于是又了Java的前身Oak语言,但是知道1995年3月,它正式更名为Java,才算Java语言真正的诞生。 JDK 1.01996年1月的JDK1.0版本,从一开始就确立了Java最基础的线程模型,并且,这转载 2014-12-17 14:34:00 · 1158 阅读 · 1 评论 -
多线程学习(一)
区别:调用start方法实现多线程,而调用run方法没有实现多线程Start:用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,这里方法run()称为线程体,它包含了要执行的原创 2014-12-17 11:56:46 · 560 阅读 · 0 评论 -
线程的七种状态
1.线程有两种实现方式,一种是实现Runnable接口,一种是继承Thread类,但不管怎样,当我们new了这个对象后,线程就进入了初始状态;2.当该对象调用了start()方法,就进入可运行状态;3.进入可运行状态后,当该对象被操作系统选中,获得CPU时间片就会进入运行状态;4.进入运行状态后情况就比较复杂了 4.1、run()方法或main()方法结束后,线程就进入终止状转载 2014-12-17 14:05:11 · 5475 阅读 · 1 评论 -
Synchronized关键字详解
多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。 同步机制可以使用synchronized关键字实现。 当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。 当synchronized方法执行完或发生异常时,会自动释放锁。(一)synchronized(this)原创 2014-12-17 16:02:03 · 3629 阅读 · 0 评论 -
java内存模型-JSR133介绍
最近在看《深入理解Java虚拟机:JVM高级特性与最佳实践》讲到了线程相关的细节知识,里面讲述了关于java内存模型,也就是jsr 133定义的规范。系统的看了jsr 133规范的前面几个章节的内容,觉得受益匪浅。废话不说,简要的介绍一下java内存规范。什么是内存规范在jsr-133中是这么定义的A memory model describes, given a转载 2014-12-17 16:26:34 · 667 阅读 · 0 评论 -
java多线程(三)
volatileJava 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。volatile 变量1. volatile用于修饰简单数据类型变量,如int、float、转载 2014-12-17 14:46:17 · 705 阅读 · 0 评论 -
多线程学习(四)
线程之间的交互(一)java.lang.Objectvoid notify():唤醒再次对象监视器上等待的单个线程void notifyAll():唤醒在此监视器上等待的所有线程void wait():导致当前线程等待,知道其他线程对此对象调用notify()或者notyfyAll()void wait(long timeout):导致当前线程等待,知道其他线程对此对象调用no原创 2014-12-19 15:22:35 · 506 阅读 · 0 评论 -
java多线程学习(六)
countDownLatch/** * * * CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。主要方法 public CountDownLatch(int count); public void countDown(); public void await() throws InterruptedExcep原创 2014-12-22 14:58:25 · 596 阅读 · 0 评论