线程:代码执行的一个分支
主要作用是提高了效率,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线程学习笔记
时间: 2024-11-09 03:36:34
学习java线程学习笔记的相关文章
Java线程学习笔记(二) 线程的异常捕捉
线程异常的捕捉: 正常的情况下,我们在main()方法里是捕捉不到线程的异常的,例如以下代码: public class ExceptionThread implements Runnable{ @Override public void run() { throw new NullPointerException(); } public static void main(String[] args) { ExecutorService executorService = Executors.n
Java线程学习笔记(一)
一.线程的创建方式: 老掉牙的话题了,继承 java.lang.Thread父类或者实现Runnalbe接口,这里就提一句: class Thread implements Runnable Thread也是继承了Runnable接口的,Runnable才是大哥. 重写run(),run()里放的都是具体的业务,包括对线程的具体操作. class Thread1 implements Runnable { int i; Thread1(int i) { this.i = i; } @Overri
Java线程学习经典例子-读写者演示
Java线程学习最经典的例子-读写者,主要用到Thread相关知识如下: - 线程的start与run - 线程的休眠(sleep) - 数据对象加锁(synchronized) - 数据对象的等待与释放(wait and notify) 程序实现: -ObjectData数据类对象,通过synchronized关键字实现加锁,在线程读写者中使用. -ConsumerThread消费者线程,读取数据对象中count值之后,通知生产者
黑马程序与----java线程学习
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元.一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成.另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源.一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行.由于线程之间的相互制约,致使线程在运行中呈现出间断性.线程也有就绪.阻塞和运
[Java基础] Java线程复习笔记
先说说线程和进程,现代操作系统几乎无一例外地采用进程的概念,进程之间基本上可以认为是相互独立的,共享的资源非常少.线程可以认为是轻量级的进 程,充分地利用线程可以使得同一个进程中执行多种任务.Java是第一个在语言层面就支持线程操作的主流编程语言.和进程类似,线程也是各自独立的,有自 己的栈,自己的局部变量,自己的程序执行并行路径,但线程的独立性又没有进程那么强,它们共享内存,文件资源,以及其他进程层面的状态等.同一个进程内的 多个线程共享同样的内存空间,这也就意味着这些线程可以访问同样的变量和
如何学习Java?学习Java顺序?
Java相对于Asp.Net或Asp.Net MVC来讲,入门是比较困难和烦琐的!它不像.Net哪样有安装开发工具就可以跑程序了,不需要配置复杂的运行环境. 推荐的学习Java的学习顺序如下: 一.Java基础知识1.基本数据类型2.字符串的操作:3.数据类型之间的转换 4.日期和时间 5.数组和集合6.文件和目录(I/O)操作 7.Java多态的实现(继承.重载.覆盖)8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串.9.Java中SQL和数据库 二.
java 线程学习。
一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在Windows系统中,一个运行的exe就是一个进程. 线程是指进程中的一个执行流程,一个进程中可以运行多个线程.比如java.exe进程中可以运行很多线程.线程总是属于某个进程,进程中的多个线程共享进程的内存. "同时"执行是人的感觉,在线程之间实际上轮换执行. 二.Java中的线程 使用
深入学习Java线程池
在前面的例子中,我们都是通过new Thread来创建一个线程,由于线程的创建和销毁都需要消耗一定的CPU资源,所以在高并发下这种创建线程的方式将严重影响代码执行效率.而线程池的作用就是让一个线程执行结束后不马上销毁,继续执行新的任务,这样就节省了不断创建线程和销毁线程的开销. ThreadPoolExecutor 创建Java线程池最为核心的类为ThreadPoolExecutor: 它提供了四种构造函数来创建线程池,其中最为核心的构造函数如下所示: 1234567 public Thread
java线程池笔记
java线程池是预先创建线程的一种技术,线程池在还没有线程到来之前创建一个数量的线程,放在空闲的队列中,然后对这些资源进行复用,减少频繁的创建和销毁对象, 1.jdk1.5以上提供了现成的线程池 2.java线程池的顶级接口是Executor,是一个执行线程的工具 3.线程池接口是ExecutorService