javaoop——第九课笔记(第七章)

转载 2018年04月16日 10:52:44
第一节:进程与线程的基础概念
一:进程概念
1.程序(任务)的执行过程。(程序指的就是应用程序——例如QQ、播放器等)
注意:进程是动态性的,放在磁盘文件中的文件并不是进程,只有在运行状态的才可称之为进程。
三大状态:加载、运行、结束
程序:就是用代码操作数据。
2.进程持有资源(共享内存,共享文件)和线程。
注意:进程是资源和线程的载体。
3、特点
A:进程是系统运行程序的基本单位。
B:每一个进程都有自己独立的一块内存空间,一组系统资源。(系统资源如一些文件等)
C:每一个进程内部数据和状态都是完全独立的。

二:线程概念——线程是一个程序的多个执行路径
1、线程是系统中最小的执行单元
2、同一进程中有多个线程(运行程序就是进程)
3、线程共享进程的资源

4、线程的交互:多个线程需要正确的交互才能进行工作。
注意:交互方式有互斥同步两种。
5、使用多线程的目的:减少了程序执行的时间
——
——
第二节:创建线程
一:java语言中线程的支持
1、java对线程的支持体现在两个:class Thread(类) 和interface Runnable(接口),在java.lang的包
2、class Thread 和interface Runnable共通的方法是:public void run()为我们提供线程实际工作执行的代码
3、Thread常用方法
join:使当前正在执行的线程暂停执行,等待调用该方法的线程结束后,再继续执行本线程。
yield():当前线程让出CUP,再次交给虚拟机调用,给和自己相同或更高优先级的线程,分配CUP资源。(不过也有可能再分配到自己)
4、重载的几个形式
A:没有参数,指明了其它的线程一定要等待正在执行的线程执行完毕之后,都会获得运行的机会
B:nanos是要把精确度改变,可改成纳秒
5、线程的启动,不能用run方法启动,不然就和普通的对象没区别了。

二:线程的创建和启动
1、两种方法创建线程
A:通过继承 Thread 类
class MyThread extends Thread{};//继承于线程类
Thread myThread = new MyThread();
myThread.start();//线程启动后,会执行run()方法

B:通过实现Runnable接口
class MyRunnable implements Runnable{}//创建一个实现类
Thread myRunnable = new Thread(new MyRunnable);//将这个类的实现类对象传入
myRunnable.start();

C:总结
1、若实现接口通过Thread.currentThread().getName()方法获取当前线程名称,继承Thread则getName()方法获取当前线程名称。
2、在同一时间,同一处理器或同一个核只能运行一条线程,当一条线程休眠之后,另一条线程才获得了我们处理器的时间
3、在线程的start()方法被调用后,线程启动,JVM会自动调用线程的run()方法来执行任务,run方法会出现在独立的执行空间最上面。线程执行完了,线程也就终止了。
4、优先级高的线程,是有可能优先占用CPU,而不是一定。

2、Thread类的方法
A:.getName() 返回线程的名字
B:.setName(String Name) 改变线程的名字
C:.start() 使该线程开始执行,Java 虚拟机调用该线程的 run 方法。
D:.sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。线程不丢失任何监视器的所属权。
E:.currentThreat() 返回对当前正在执行的线程对象的引用。(静态方法,返回Thread类型)
——
——
第三节:线程同步
一:并发性——多线程的缺点
1、并发性问题会引发竞争状态,竞争状态会引发数据损毁
2、并发性的发生,来源于,如果两个不同执行空间(线程)上的方法,都对同一个对象执行读改命令。

二:同步化
1、因为并发性的问题,我们需要给一些方法加上锁
2、加上synchronized关键字,代表方法被同步化,在单一线程执行完,整个方法前,其他线程无法进入该方法。
3、对象就算有多个同步化方法,但也还是只有一个锁,一把钥匙。
所以,如果一旦有某个线程进入该对象的同步化方法,在解锁前,其他线程就无法进入该对象上的任何同步化方法。(因为一个对象只有一把钥匙)
注意:对象的锁,只会在同步化方法上起作用。(锁不是在方法上,而是在对象上!
4、如果对象有两个同步化方法,那么就代表两个线程无法进入同一同步化方法也无法进入不同的同步化方法。(想要进入,只有等单一线程执行完同步化发那个发,将对象的钥匙归还
注意:使用同步化方法,一般是该方法,有操作对象成员变量的操作。
三:死锁
1、发生情形是,两个线程互相持有对方等待的东西,也就是钥匙。
2、因为方法的同步化,线程如果没有钥匙无法进入
3、只要有两个线程和两个对象,就可以引发死锁。

JAVA OOP第七章 集合框架

package cn.happy1; public class Penguin { private String name; private String color; public Str...
  • qq_36074043
  • qq_36074043
  • 2017-04-07 18:24:07
  • 163

【Java】Java多线程基础之OOP源码剖析

一、OOP之Thread、Runnable和Callable         Java中Thread代表线程对象,而Runnable和Callable均代表了线程执行的target对象,这种设计透露了...
  • reliveIT
  • reliveIT
  • 2015-05-05 10:03:21
  • 1073

孙鑫vc++ 第九课 笔记 修改MFC AppWizard向导生成的框架程序的外观和大小

1、在窗口建立之前改变窗口外观,第三课讲mfc运行机制的时候说过这个函数了,留了一个后门给我们   BOOL CMainFrame::PreCreateWindow(GREATESTRUCT& cs)...
  • happyhhb
  • happyhhb
  • 2007-05-30 20:24:00
  • 2161

《JAVA编程思想》读书笔记1——OOP思想

面向对象思想JAVA是一种面向对象编程语言,它基于Smalltalk语言,作为OOP语言,它具有以下五个基本特性 万物皆对象,每一个对象都会存储数据,并且可以对自身执行操作。因此,每一个对象包含两部分...
  • yu616568
  • yu616568
  • 2016-05-03 22:34:28
  • 1409

北大青鸟自定义框架

  • 2012年10月17日 16:13
  • 46KB
  • 下载

Think in java第七章笔记

1.通过继承可将一个对象当做它ziji
  • suichen1
  • suichen1
  • 2014-07-18 17:03:49
  • 523

大学物理学 同济大学出版社 第三版 第七章课件

  • 2008年10月15日 17:48
  • 1.92MB
  • 下载

韩顺平_Javascript笔记完整版

  • 2014年12月17日 16:03
  • 4.68MB
  • 下载

《Java并发编程实战》第七章 取消与关闭 读书笔记

Java没有提供任何机制来安全地(抢占式方法)终止线程,虽然Thread.stop和suspend等方法提供了这样的机制,但是由于存在着一些严重的缺陷,因此应该避免使用。但它提供了中断Interrup...
  • love_world_
  • love_world_
  • 2014-05-28 08:02:23
  • 1388

JAVAOOP编程

  • 2011年06月13日 22:47
  • 3.77MB
  • 下载
收藏助手
不良信息举报
您举报文章:javaoop——第九课笔记(第七章)
举报原因:
原因补充:

(最多只允许输入30个字)