11.多线程简介

定义:

进程:是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元

线程:进程中的一个独立的控制单元,控制着进程的执行,一个进程至少有一个线程

--------------------------------------------------------------------------------------------

JVM启动时会有一个进程:java.exe

该进程中至少有一个线程负责java程序的执行,这个线程运行的代码存在于main方法中

该线程称为主线程

--------------------------------------------------------------------------------------------



JVM启动时就是多线程:

主线程,垃圾回收机制线程。


没有垃圾回收线程,会造成主线程停止,运行垃圾回收机制清理内存,程序不动

--------------------------------------------------------------------------------------------


多线程存在的意义:

提高效率

多部分代码同时进行

--------------------------------------------------------------------------------------------



如何自定义多线程:java.lang.Thread类

第一种方法:继承Thread类,覆盖run()

代码:

class Demo extends Thread{

public void run(){ }

}

建立一个对象,就会创建一个线程:

Demo d=new Demo();

d.start();//打开线程,并使JVM调用run()


覆写run()原因:Thread用于描述线程,该类定义了一个功能

用于存储线程要运行的代码,该存储功能就是run();


获取线程对象以及名称:

线程都有自己默认的名称:Thread-编号,可通过getName()获取

父类中有Thread(String name)构造方法,故自定义名称直接在自定义类中构造方法传入super(name)即可,或者setName()


static Thread currentThread():返回当前正在执行的线程对象的引用(用于获取对象)

Thread.currentThread()==this//返回true;


-------------------------------------------------------------------------

第二种方法:实现Runnable接口的类

代码:

class Demo implements Runnable{

public void run(){}

}

在main中:

 Demo d=new Demo();//与Thread无关

Thread t1=new Thread(d);//只有一个共享对象d

t1.start();


------------------------------------------------------------------------

实现方式与继承方式的区别:

class Student extends Thread{

public void run(){}

}

class Student extends Person implements Runnable{

public void run(){}

}

实现方式的好处:

避开了单继承的局限性

定义线程时建议使用


继承Thread:线程代码存放于Thread子类run()中

实现Runnable:线程代码存放在接口子类run()中

-------------------------------------------------------------------------

对于run()中的代码若有异常,只能处理,无法抛出

原因:接口run()没有抛出异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值