学习java线程学习笔记
线程:代码执行的一个分支
主要作用是提高了效率,cpu能同时执行多个部分的代码。
线程的创建:两种方式
a.继承于thread类,重写run方法。
b.实现了runable接口,实现run方法。
启动线程必须用线程的start方法;如果直接调用线程的run方法则就是单线程了。
有一个对象启动两个线程和两个对象启动两个线程的区别:一个对象启动两个线程,两个线程中的修改的内容始终是针对同一个对象的。两个对象启动
两个线程,线程中修改的内容是针对不同的对象。
Thread类:部分方法
start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
getPriority() 返回线程的优先级。
setPriority(int newPriority) 更改线程的优先级。
currentThread() 返回对当前正在执行的线程对象的引用。
setName(String name) 改变线程名称,使之与参数 name 相同。
线程的状态:
1.新建 : new一个线程后线程处于新建状态
2.就绪 : 当一个线程调用了start方法之后 处于就绪状态(注意太调用了此方法并不一定立刻去执行线程的方法)
3.运行 : 线程在执行的run方法的时候处于运行状态
4.睡眠 : 线程调用了sleep方法之后处于休息状态(此状态当休息时间到了之后立刻就转为就绪状态)
5.等待 : 线程调用了wait方法之后处于等待状态。
6.死亡 : run方法执行完毕。
等待状态与睡眠时间状态的区别:
睡眠状态是时间到了自然处于就绪状态,只有CPU分配了事件片,立刻就可以继续执行。
等待状态是如果没有线程通知的话,等待状态永远醒不过来了.
常用方法:
a.currentTHread():静态方法。获取当前的线程。
b.getName():获取线程的名字
c.setName():设置线程的名字(没有设置则有默认的名字)
d.sleep():让线程休息一段时间。
e.join():合并线程,让两个线程合并一个线程。
f.yeild():当前线程让出cpu,当前线程处于一个就绪状态
g.setPriority():设置线程的优先级。默认的级别是5.优先级从1~10;
线程的同步: 多个线程同时执行某段代码就会出现线程同步。此时结果不可预料.
防止线程同步:采用synchronized关键字修饰需要进行同步的代码。
synchronized的原理:是对资源加一把锁,当一个线程进入此资源执行代码的时候,立刻加锁,其他的线程
执行处于等待状态。一直到此线程释放锁后,其他线程才能进入此资源执行代码。
学习java线程学习笔记的更多相关文章
- 如何学习Java?学习Java顺序?
Java相对于Asp.Net或Asp.Net MVC来讲,入门是比较困难和烦琐的!它不像.Net哪样有安装开发工具就可以跑程序了,不需要配置复杂的运行环境. 推荐的学习Java的学习顺序如下: 一.J ...
- java 线程学习
转载:详见处http://lavasoft.blog.51cto.com/62575/27069 Java多线程编程总结 下面是Java线程系列博文的一个编目: Java线程:概念与原理 ...
- java线程学习——汉堡销售问题
汉堡店中有一个负责做汉堡的厨师,一个负责销售的营业员,用java线程表示他们的营业过程: 问题原型就是生产者与消费者的问题. 首先定义一个汉堡包箱子类与几个相关的变量类: public class H ...
- Java线程学习详解
线程基础 1. 线程的生命周期 1.1 新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态.它保持这个状态直到程序 start() 这个线程. 1 ...
- [Java基础] Java线程复习笔记
先说说线程和进程,现代操作系统几乎无一例外地采用进程的概念,进程之间基本上可以认为是相互独立的,共享的资源非常少.线程可以认为是轻量级的进 程,充分地利用线程可以使得同一个进程中执行多种任务.Java ...
- Java线程学习笔记(两) 线程异常处理
线程捕获异常: 情况下,我们在main()方法里是捕捉不到线程的异常的,比例如以下面代码: public class ExceptionThread implements Runnable{ @Ove ...
- Java线程学习笔记(一个)
一个.正在创建的线程: 老掉牙的话题了.继承 java.lang.Thread父类或者实现Runnalbe接口.这里就提一句: class Thread implements Runnable Thr ...
- Java 线程学习笔记
1.什么是线程 进程: 一个正在运行的程序就叫一个进程. 每个进程都有独立的内存空间. (进程是资源分派的基本单位) 线程: 一个进程中可以有很多线程.----> 常说的多线程 线程没有独立的内 ...
- 从使用到原理学习Java线程池
线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收. 所 ...
随机推荐
- Web直接导入导出SHP/CAD实现探讨。
1.导入SHP/CAD文件 WEB具有直接美观展现功能,功能实现到可视化最好不要超过3S,那么就要限制导入文件的大小和优化算法了. 1.1.SHP导入实现思路 SHP格式开源,Git上随便可以找到读取 ...
- [leetcode-567-Permutation in String]
Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. I ...
- 【Android Developers Training】 51. 序言:打印内容
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 初学spring boot踩过的坑
一.搭建spring boot环境 maven工程 pom文件内容 <project xmlns="http://maven.apache.org/POM/4.0.0" xm ...
- NavigationView的头部的事件监听
现在App的UI设计中Drawerlayout+NavigationView是一个比较常用的设计了,而以前我一般只是在Navigation中的menu(即下部的item中)添加事件监听,而今天碰到一个 ...
- peoplesoft function PSTREENODE 通过 deptid 获得部门树 全路径 code
create or replace function getUnitFullcode(deptid in varchar) return varchar2 is r ); c int; n ); m ...
- Chrome浏览器扩展开发系列之十二:Content Scripts
Content Scripts是运行在Web页面的上下文的JavaScript文件.通过标准的DOM,Content Scripts 可以操作(读取并修改)浏览器当前访问的Web页面的内容. Cont ...
- Asp.net管理信息系统中数据统计功能的实现
数据统计是每个系统中必备的功能,在给领导汇报统计数据,工作中需要的进展数据时非常有用. 在我看来,一个统计的模块应该实现以下功能: 能够将常用的查询的统计结果显示出来: 显示的结果可以是表格形式,也可 ...
- Linux查看内存占用情况
输入:top PID 进程的ID USER 进程所有者 PR 进程的优先级别,越小越优先被执行 Ninice 值 VIRT 进程占用的虚拟内存 RES 进程占用的物理内存 SHR 进程使用的共享内存 ...
- 使用iframe父页面调用子页面和子页面调用父页面的元素与方法
在实际的项目开发中,iframe框架经常使用,主要用于引入其他的页面.下面主要介绍一下使用iframe引入其他页面后,父页面如何调用子页面的方法和元素以及子页面如何调用父页面的方法和元素. 1.父页面 ...