线程.docx

上传人:b****6 文档编号:7578190 上传时间:2023-01-25 格式:DOCX 页数:11 大小:1.28MB
下载 相关 举报
线程.docx_第1页
第1页 / 共11页
线程.docx_第2页
第2页 / 共11页
线程.docx_第3页
第3页 / 共11页
线程.docx_第4页
第4页 / 共11页
线程.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

线程.docx

《线程.docx》由会员分享,可在线阅读,更多相关《线程.docx(11页珍藏版)》请在冰豆网上搜索。

线程.docx

线程

线程

1.进程

2.线程

3.多线程开发的优势

4.定义一个线程

5.线程的状态

6.线程的优先级

7.join()方法

8.sleep()方法

9.yield()方法

10.setDaemon()方法

11.线程同步

1.同步方法

2.同步代码块

3.死锁

12.线程之间相互通信

1.进程:

每一个进程都对应了操作系统中的一个执行实例。

进程就是应用程序的执行实例,只有当这个应用程序执行的时候,他才成为进程。

特点:

1.动态性(动态产生,动态消亡)

2.并发行(系统中的所有进程都可以与其他进程并发执行,CPU通过时间片轮转来实现)

3.独立性(进程是一个可独立运行的基本单位,也是系统分配资源和进行调度的独立单位)

2.线程:

进程内部的一个执行单元,它是程序中一个单一的顺序控制流程。

(所有的线程都是java.lang.Thread类或其子类的一个实例)

特点:

1.一个进程可包含多个线程,一个线程至少要有一个父进程。

2.线程可以有自己的堆栈,程序计数器和局部变量

3.线程与父进程的其他线程共享进程所有的资源。

4.独立运行,采用抢占资源方式。

5.一个线程可以创建和删除另外一个线程(例如主线程)

6.同一个进程中的多个线程之间可以并发执行。

7.线程的调度管理是由进程来完成的。

主线程:

一个进程的入口。

注意:

在编写多线程程序的时候,编写的线程不会妨碍同一进程的其他线程。

线程分类:

1.系统级线程(又称为核心级线程,负责管理调度不同进程之间的多个线程,由操作系统直接管理)。

2.用户级线程(全部由用户来控制,运行时不需要特殊的系统支持,仅存在于用户空间,在应用程序中控制其创建,执行,消亡)

3.多线程开发的优势

1.改善用户体验

2.提高资源利用率

4.定义一个线程

1.继承java.lang.Thread类

1.定义Thread类的子类,重写父类的run()方法

2.创建Thread子类的对象

3.调用start()方法启动该线程

2.实现java.lang.Runnable接口

1.定义Runnable接口的实现类

2.用newThread(Runnable)的方法创建线程对象

3.调用start()方法启动该线程

5.线程的状态

6.线程的优先级(默认继承父线程的优先级)

7.join()方法

作用:

阻塞指定的线程等到另一个线程完成以后再继续执行

例:

A和B线程,如果在A的run方法中,调用b.join()。

它的意思是说,把A加入到B的末尾,等B执行完A在执行。

8.sleep()方法(Thread.sleep(longmillis));

作用:

阻塞当前线程,让其他线程来强张资源(不考虑他们的优先级)。

9.yield()方法(语法:

Thread.yield();)

作用:

将(被暂时停止运行)当前线程转入可运行状态,这个线程任然可以和其他等待执行的线程竞争处理器资源(考虑他们的优先级)。

10.setDaemon()方法(线程对象.setDaemon(booleanon);)

作用:

通过给.setDaemon()传递booleanon参数,来指定线程是否为后台线程(后台线程也称守护线程)。

后台线程:

就是一个在后台运行的线程,它从属于创建它的线程,因此当创建后台线程的线程结束时,后台线程也随之消亡。

注意:

除了后台线程,其他线程都是用户线程。

只能在线程启动之前将此线程设为后台线程,而不能再启动之后。

11.线程同步(多线程之间同步是由“锁”来实现的)

同步的作用:

当多个线程访问同一个资源时,只能有一个线程可以访问该资源,其他线程只能等待该线程使用完这个资源后才能使用。

“锁”内容:

在java语言中,每个对象都有一个内置的“锁”。

这个“锁”平时不会起到任何作用,只有在这个对象中存在着同步代码块的时候,这个“锁”才会发挥作用。

当我们执行一个非静态同步方法时,就会自动获得当前对象的“锁”,这个“锁”只能被一个同步方法或同步代码块获得。

获得当前对象的“锁”也称锁住了当前对象(同步当前对象)。

1.同步方法(同步this关键字指向的对象的“锁”)

语法:

访问修饰符synchronized返回值类型方法名(),

或synchronized访问修饰符返回值类型方法名()

注意:

第一点:

两个线程不能同时访问同一个对象中标注为同步的方法,但对于对象中没有标注synchronized关键字的方法是没有约束的。

第二点:

同步一个方法对在同一个对象中是有做用到,对同一类的不同对象起不到同步的作用。

2.同步代码块(“锁”可以是任何存在的对象的“锁”)

语法:

synchronized(指定要收益的对象){同步语句块}

3.死锁

12.线程之间相互通信

wait()方法:

(挂起当前线程,并且释放共享资源的锁)

notify()方法:

(调用notify()方法可以唤醒因为调用wait()方法而挂起的那个线程,使这个线程退出阻塞状态而进入可运行状态。

如果没有任何等待的线程notify()就什么也不做。

notifyAll()方法:

(可以使所有因调用wait()方法而被挂起的线程都重新启动,条件:

wait()方法和notifyAll()方法要属于同一个对象。

注意:

1.这三个方法都是在java.lang.Object类中定义的。

2.只能在同步方法或同步代码块中使用(synchronized),否则就会抛出异常。

生产者生产一个商品,放入仓库并告诉消费者仓库以存有商品,消费者将商品取走,并告诉生产者商品以消费。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1