`
hougbin
  • 浏览: 492708 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java 线程中一些模糊概念的解释

    博客分类:
  • JAVA
阅读更多

1,并发与并行

    并发---线程之间相互切换执行

    并行---线程之间齐头并进,主要体现在多处理器的环境下

 

2。thread实例与创建的线程之间的关系

     属于两个部门,即使线程结束了,实例依然存在。主程序结束的时,并不代表创建的线程也结束,如main方法

 

3。 Thread.sleep(2000),让当前线程休眠2秒,捕捉Interrupted exception

 

4。synchronized

     synchronized 加在方法上,等同于 synchronized (this) {}//阻挡,作用于实例的这个方法,多个实例之间无任何影响

     static synchronized ---类方法锁定,等同于synchronized (A.class) {}//阻挡,锁定这个类A,实例之间互斥,当前只有一个类在操作

 

5. thread-safe 线程安全

    可容一个以上线程使用,而不危及安全性的类称为 thread-safe类。

    常用的举例,java.util.Vector是线程安全的,java.util.ArrayList不是,所以在使用ArrayList的时候要使用synchronized来锁定,还有MAP,SET都是不安全的,都需要使用synchronized类构建安全的变量

 

6。多线程程序设计应遵循的原则

     保证程序的安全性和生存性

7。使用synchronized会提高程序的效率吗?为什么?该如何解决?
  原因:1。线程获取锁时需要消耗时间,2,线程冲突时,线程等待锁的释放需要时间,导致性能下降。
  解决:尽可能减小程序锁定的范围,使用synchronized块

8。定义变量的时候需要注意的问题,防止出现线程不安全,造成值的改变

    基本数据类型,引用类型是原子的,不会出现值(地址)被分割的情况,

   但是在线程间共享long,double类型需在声明前加volatile关键字,让他作为一个整体

9.设计一个immutable(不变) ,安全的类

     首先将类声明成final,则禁止子类继承,修改类的属性;

     类的字段只有get方法,去除set方法,且为属性赋值时,只使用类的有参构造器;

     同时将属性声明为final类型,保证通过构造器赋值之后又,再不允许修改。

    好处:避免使用synchronized,提高程序效率

   适用:适用于多个线程之间共享实例的时候

10. 使用wait(),notify()方法时必须保证实例是被所定的,即使用synchronized关键字

 

11 wait(),sleep(),yield()区别,哪个是Object的方法,哪个Thread的方法
  wait是Object类的方法,sleep与yield都是Thread类的方法。wait调用的时候需要注意的是该方法是释放锁标志的, 而sleep在调用的时候是紧紧抱着锁标志的,也就是等他完全执行完成了才可以让其他线程来访问的。
  sleep 方法使当前运行中的线程睡眼一段时间,进入不可运行状态,这段时间的长短是由程序设定的,yield 方法使当前

线程让出 CPU 占有权,但让出的时间是不可设定的。实际上,yield()方法对应了如下操作: 先检测当前是否有比当前线程优先级别高的线程,如有,则把 CPU 的占有权交给此线程,否则,继续运行原来的线程。所以yield()方法称为“退

让”,它把运行机会让给了同等优先级的其他线程。

 

分享到:
评论

相关推荐

    Thinking in Java

    Bruce Eckel优美的行文以及短小、精悍的程序示例有助于您理解含义模糊的概念。 面向初学者和某种程度的专家 教授Java语言,而不是与平台有关的理论 覆盖Java 1.2的大多数重要方面:Swing和新集合 系统讲述...

    Java编程思想

    Bruce Eckel优美的行文以及短小、精悍的程序示例有助于您理解含义模糊的概念。 覆盖Java 1.2 的大多数重要方面:Swing和新集合系统讲述Java 的高级理论:网络编程、多线程处理、虚拟机性能以及同非Java 代码的连接 ...

    thinking in Java 编程思想

    优美的行文以及短小、精悍的程序示例有助于您理解含义模糊的概念。 面向初学者和某种程度的专家 教授Java 语言,而不是与平台有关的理论 覆盖Java 1.2 的大多数重要方面:Swing 和新集合 系统讲述Java 的高级理论:...

    Java语言基础下载

    线程的概念 175 线程状态和调度 ….176 线程中断/恢复的几种方式 178 创建线程的两种方式 179 线程的控制 180 实例分析 182 内容总结 189 独立实践 190 第十二章:高级I/O流 192 学习目标 192 I/O基础知识 193 字节...

    java面试800题

    Q0043 java相关概念 "static:静态,无需实例化,可直接引用,全局只有一份copy,修饰变量和方法 final:最终的,不可继承、不可修改,修饰变量、方法、类 volatile:volatile变量表示保证它必须是与主内存保持一致,...

    Java课程设计-21点小游戏.docx

    以前对面向对象认识和概念是有点模糊的,现在通过自己动手做课程设计,从实践上认识了面向对象编程是如何通过对象来简化面向过程中的操作。课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意尽力寻找...

    thinking in java

    thinking in java 从Java的基本语法到它最高级的特性(网络编程、高级面向对象能力、多线程),《Thinking In Java》都能对您有所裨益。Bruce Eckel优美的行文以及短小、精悍的程序示例有助于您理解含义模糊的概念。

    Java课程设计-21点小游戏(2).docx

    以前对面向对象认识和概念是有点模糊的,现在通过自己动手做课程设计,从实践上认识了面向对象编程是如何通过对象来简化面向过程中的操作。课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意尽力寻找...

    Java的六大问题你都懂了吗

    这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。这个语句声明的是一个指向对象的引用,名为"s",可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这...

    Java初学者都必须理解的六大问题

    这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。  这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的...

    Java内部类:你真得了解方法内部类吗?

    java内部类,相信很多人都使用过内部类,新建线程使用的匿名内部类,但是有很多人对内部类的一些概念处于模糊阶段,比如为什么方法内部类引用方法参数,方法参数必须设置为final,所以本文系统得整理了一下内部类...

Global site tag (gtag.js) - Google Analytics