您的位置:首页 > 编程语言 > Java开发

java基础第十八天 多线程

2017-08-23 08:51 183 查看
1、多线程

程序:就是用某种编程语言编写的能够执行特定功能的代码,是静态

进程:就是执行中的程序,是动态,进程拥有计算机分配的独立的资源(cpu,内存,网络)

线程:是程序执行的路径,如果一个进程里只有一个执行路径,叫单线程

如果一个进程里有多个执行路径,叫多线程

jvm是多线程还是单线程?

答案是:多线程

因为虚拟机启动时,需要同时启动垃圾回收线程,否则会产生内存溢出错误

2、线程的创建和启动

2.1 继承Thread

线程的创建与启动方式1:

创建线程:

class 类名 extends Thread

实现线程方法体

@Override

void run()

是因为不是所有的方法,都用来执行多线程程序,run方法提供一个实现入口,run方法是有虚拟机调用

线程启动

start();

2.2 实现Runnable

线程的创建与启动方式2:

创建线程:

class MyRunnable implements Runnable

实现线程方法体

@Override

void run()

线程启动

Thread thread = new Thread(new MyRunnable());

thread.start();

使用继承Thread和实现Runnable区别:

继承Thread: 线程代码存放Thread子类run方法中。

实现Runnable:线程代码存在接口的子类的run方法。

使用实现Runnable的好处:

1、打破单继承的局限性

2、多个线程可以共享同一个接口实现类的对象,非常适合多个相同线程来处理同一份资源。

3、线程的常用方法

3.1设置线程的优先级别

线程的优先级别:

MAX_PRIORITY(10);
MIN _PRIORITY (1);
NORM_PRIORITY (5);


线程级别范围:1-10,超出这个范围,运行时会拋异常

默认级别:5,就是不设置的时候,默认是这个级别

设置优先级别的方法:

getPriority() :返回线程优先值

setPriority(int newPriority) :改变线程的优先级

3.2线程休眠

线程休眠:

static void sleep(long millis)

在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。

特点:

指定时间段内放弃对CPU控制,使其他线程有机会被执行
需要处理中断异常InterruptedException


3.3线程加入

线程加入:

public final void join() throws InterruptedException等待该线程终止。

例如:

Thread thread01 = new ThreadJoin();

Thread thread02 = new ThreadJoin();

System.out.println("调用thread02线程的join方法开始,主线程会阻塞,开始只i系那个thread02的线程方法");
try {
thread02.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("直到thread02执行完毕以后才会执行该代码,因为主线程调用thread02线程的join方法,被阻塞");


3.4线程让步

线程让步:

static void yield() 暂停当前正在执行的线程对象,并执行其他线程。

若优先级不一样,高的先执行

若优先级一样,会继续抢cpu执行权

3.5线程停止

线程停止:

@Deprecated 过时方法,不建议使用

public final void stop()

建议使用:

public void interrupt() 中断线程。

4、线程的分类

线程分为:

用户线程

守护线程

特点:

1、守护线程是用来服务用户线程的,

2、通过在start()方法前调用thread.setDaemon(true)

注意:一个进程里面,不能都是守护线程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 多线程