Java学习笔记----线程2

获取当前线程对象的方法是:Thread.currentThread();

当线程目标的run方法结束,意味着线程完成

线程的状态:

1)新状态:线程对象已经创建,但是还没有调用start方法

2)可运行状态:start方法被调用。或者运行之后,从阻塞等待睡眠回来后。

3)运行状态:开始运行,可以看场可运行状态时运行状态的一个缓冲

4)等待睡眠阻塞 状态:冻结状态

5)死亡,run方法结束

阻止线程运行:

睡眠:Thread.sleep()

线程的优先级和线程的让步:

setPriority()   线程的优先级在1~10之间,默认是5

Thread.yield()  有可能是没有效果的。因为让步的线程还是会被线程调度再次选中。

线程的加入:

join()

Thread的非静态方法join()让一个线程B“加入”到另外一个线程A的尾部。在A执行完毕之前,B不能工作。

join()方法还有带超时限制的重载版本。例如t.join(5000);则让线程等待5000毫秒,如果超过这个时间,则停止等待,变为可运行状态

鉴于同步与锁看着有点复杂,下一次专门再看好了。

时间: 2024-12-17 16:23:59

Java学习笔记----线程2的相关文章

Java学习笔记----线程

继续学习----------------------------------------------------------------------- 在Java中线程指的是两件事 1)java.lang.Thread类的一个实例 2)线程的执行 一个Thread类实例只是一个对象,生死于堆上.main方法就是一个主线程 Java线程的创建与启动: 1)扩展java.lang.Thread类 2)实现java.lang.Runnable接口 实例化线程: 1)如果是扩展Thread的,直接用ne

java学习笔记 线程同步

在实现Runnable接口后,可以通过多个start方法来调用同一段代码资源,这也会导致一个问题就是资源可能不同步. 解决资源不同步的方法是,在同一时间段内,只允许一个线程来操作这个对象或方法,其他线程需等待此线程访问结束后才能继续执行,将其锁住. 关键字synchronized:表示只能有一个线程执行synchronized所声明的代码块或方法,并且在执行过程中其他方法不能锁定这个对象 .使用方式有同步代码块与同步方法,两者功能一样. 只能有一个同步方法访问该对象,其他方法若是同步的则不能访问

Java学习笔记——线程两种常用的创建调用方法

这是两种开发中常用的线程使用方法,匿名对象调用即可,很简单,掌握即可 <span style="font-size:18px;">class ThreadDemo { public static void main(String[] args) { new Thread() { public void run() { //coding here } }.start(); Runnable r = new Runnable() { public void run() { //

java学习笔记14--多线程编程基础1

本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为一个进程,例如:用字处理软件编辑文稿时,同时打开mp3播放程序听音乐,这两个独立的程序在同时运行,称为两个进程 进程要占用相当一部分处理器时间和内存资源 进程具有独立的内存空间 通信很不方便,编程模型比较复杂 多线程 一个程序中多段代码同时并发执行,称为多线程,线程比进程开销小,协作和数据交换容易

线程异步学习(基于java学习笔记)

一 基本概念的理解 1.1线程中断方法 --interrupt() 当调用一个线程的interrupt方法时候,线程并没有真的被中断,只是对其状态改变,线程会有一个boolean变量isInterrputed.有wait sleep方法会阻塞线程. wait 和sleep方法都会使得线程挂起,阻塞.区别是wait会释放资源,而sleep方法并不会释放资源.一旦执行wait方法后,线程立即被挂起,直到有其他线程调用资源的notify方法.具体参见博客,多线程资源争用问题: http://blog.

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my

java学习笔记16--异常

java学习笔记16--异常 异常 异常时导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失, 所以在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序正常的执行. 异常类的继承结构 在整个java的异常结构中,实际上有以下两个最常用的类:Exception.Error,这两个类全都是Throwable的子类 Exception:一般表示的是程序中出现的问题,可以直接使用try...catch处理. Error:一般指

Java 学习笔记(2015.7.20~24)

Java 学习笔记(2015.7.20~24) Java Java 学习笔记(2015.7.20~24) 1.StringBuffer与StringBuilder的区别: 2.基本数据类型包装类 3.Date.Calendar.DateFormat等与时间相关的类 1.常用类String 2.正则表达式 3.常用类 StringBuffer 代表可变的字符序列 拆箱与装箱 包装类的应用 匿名内部类 数组 day11 day12 day13 day14 day11 父类中使用public定义的方法

Java学习笔记_23_List接口实现类

23.List接口实现类: List接口继承了Collection接口,它是一个允许存在重复项的有序集合. 1>实现类ArrayList: ArrayList类支持可随需要而增长的动态数组.数组列表以一个原大小被创建,当超过了它的大小, 类集自动增大,当对象被删除后,数组就可以缩小. 优点:ArrayList类对于使用索引取出元素用较高的效率,他可以用索引快速定位对象. 缺点:ArrayList类对于元素的删除或插入速度较慢. 构造方法: · ArrayList(): 构造一个初始容量为10的空