java基础-003
10.进程和线程
进程是执行者的应用程序,而线程是进程内部的一个执行序列.一个进程可以有多个线程.线程又叫轻量级进程.
创建线程的三种方式:
I> 继承Thread类
II> 实现Runnable接口
III> 应用程序可以使用Executor框架来创建线程池
实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类.在用用设计中已经继承类别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口.同时,线程池也是非常高效的,很容易实现和使用.
线程的状态:
I> 新建(new):新创建了一个对象.
II> 可运行(runnable):线程新创建对象后,其他线程(比如main线程)调用了该对象的start()方法,该状态的线程位于可运行的线程池中,等待被线程调度选中,获取CPU的使用权.
III> 运行(running):可运行状态的线程获得了CPU的时间片,执行代码.
IV> 阻塞(block):阻塞状态是指线程因为某种原因放弃了CPU的使用权,也即让出了CPU时间片,暂时停止运行.直到线程进入可运行状态,才有机会再次获得CPU时间片转到运行状态.
阻塞的情况分为3种:
a> 等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待队列中.
b> 同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中.
c> 其他阻塞:运行的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求,JVM会把该线程置为阻塞状态.当sleep()状态超时时,join()等待线程终止或超时或I/O处理完毕,线程重新转入可运行状态.
V> 死亡(dead):线程run(),main()方法执行结束,或者因异常退出run()方法,则该线程结束生命周期,死亡的线程不可再次复生.
11.同步方法和同步代码块
同步方法默认用this或者当前类class对象作为锁.
同步代码块可以选择以什么来加锁,比同步方法要更加细颗粒度,我们可以选择只同步会发生同步问题的部分代码而不是整个方法.
12.监视器
监视器和锁在Java虚拟机中是一块使用的.监视器监视一块同步代码块,确保一次只有一个线程执行同步代码块.每一个监视器都和一个对象引用相关联.线程在获取锁之前不允许执行同步代码.
13.死锁
两个(或多个)进程都在 等待对方执行完毕才能继续往下执行的时候就发生类死锁.结果就是两个进程都陷入类无限等待中.
使用多个线程的时候,一种非常简单的避免死锁的方式就是:指定获取死锁的顺序,并强制按照指定的顺序获取锁.因此如果所有的线程都是一同样的顺序加锁和释放锁,就不会出现死锁了.
java基础-003的更多相关文章
- 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程
003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...
- 微冷的雨Java基础学习手记(一)
使用Java理解程序逻辑 之凌波微步 船舶停靠在港湾是很安全的,但这不是造船的目的 北大青鸟五道口原玉明老师出品 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识点时,要 ...
- java基础01
1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Runtime Env ...
- Java 基础总结大全
Java 基础总结大全 一.基础知识 1.JVM.JRE和JDK的区别 JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jv ...
- java基础 01
java基础01 1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Ru ...
- [ 转载 ] Java基础二
前言 关于赢在面试的Java题系列基本收集整理完成了,所有题目都是经过精心挑选的,很基础又考验求职者的基本功,应该说被面试到的几率很大.这里整理挑选出来供大家面试前拿来看一看,所有题目整理自网络,有一 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html 谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...
- 【JAVA面试题系列一】面试题总汇--JAVA基础部分
JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...
- 最适合作为Java基础面试题之Singleton模式
看似只是最简单的一种设计模式,可细细挖掘,static.synchronized.volatile关键字.内部类.对象克隆.序列化.枚举类型.反射和类加载机制等基础却又不易理解透彻的Java知识纷纷呼 ...
随机推荐
- TWaver HTML5 (2D)--基本概念
基本概念 TWaver HTML5(以下简称TWaver)使用HTML5技术和javascript语言,可在支持HTML5的浏览器上进行绘图. 使用TWaver前,需熟悉几个基本概念:图元(Eleme ...
- js正则--验证6-12位至少包含数字、小写字母和大些字母中至少两种字符,
var reg=/^((([a-z])+([0-9])+)|(([0-9])+([a-z])+)|(([A-Z])+([0-9])+)|(([0-9])+([A-Z])+)|(([a-z])+([A- ...
- C# Form内存回收
namespace WebBrowserMemoryTest { public partial class Form1 : Form { private int _Pages; public Form ...
- UNIX高级环境编程学习
1-5实例 控制字符:ctrl + 另一个键.control + D或者^D是默认的文件结束符(EOF字符).
- hdu---(1325)Is It A Tree?(并查集)
Is It A Tree? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- javaSE基础之记事本编程
首先安装好jdk和jre,之后进行如下操作: 1. 将代码记事本---->cmd--->javac 文件名.java ----->java 文件名 如图: 2. 关于记事本文件属性的 ...
- eclipse中SVN分支合并到主干
在项目开发中,需要添加一些新的功能,但是又不想影响到其他开发人员的项目进度,所以决定使用SVN分支进行开发,分支开发完毕后再合并到主干.本文介绍如何在eclipse中合并分支到主干. 1. 要想将分支 ...
- Objective-C:Foundation框架-常用类-NSDictionary
与NSString.NSArray一样,NSDictionary是不可变的,其对应可变类型为NSMutableDictionary.其用法如下: #import <Foundation/Foun ...
- easyui numberbox不可编辑
今天又遇到了给easyui中numberbox设置不可编辑的功能,在(http://www.jeasyuicn.com/api/docTtml/index.htm)API中找到了一个方法:
- linux 常用命令;
bc 计算器 :quit 退出 top 任务管理器 q退出 who 显示在线用户 whoami 当前操作用户 kill id 结束当前进程 ifconfig 显示当前网络状态 clear 清屏 vim ...