多线程与多线程中的并发问题

子线程的创建方法有两种

第一种

类继承Thread类,重写他的run方法

第二种

继承Runnable接口,并实现他的run方法

首先thread这个类也继承了Runnable的接口

所以其实也是包含其中的

调用子线程达到多线程的方法

第一,要启用子线程需要在创建子线程后

用线程名.start(),如果是线程名.run()的话

他只是调用了类中的run方法,此时仍然是

单线程的并不是多线程的这是要注意的

第二

两种方法的创建对象方法是有区别的

如果使用方法一

Mythread mt=new Mythread();

我们直接创建对象即可.因为方法继承了接口所以他

本身就是一个接口.

方法二我们首先需要定义任务对象

MyRunnable mr=new MyRunnable()//创建一个任务对象

然后在创建一个进程对象

Thread thread=new Thread(mr)//创建一个进程对象并把

任务对象作为参数传给进程即可,传送任务对象后直接逗号

可以命名进程,也可以在其他地方使用setname()命名

使用getname获取姓名,这是一个封装

还有一种是jdk1.8以后的lambda方法

直接new Thread(()->{})即可

括号()就是run方法的参数,注意run方法无参;

多线程的状态有五种

正常情况下是

创建状态-->就绪状态->运行状态->死亡状态

然而我们有时候需要人为的暂停他,亦或者程序

出现了不可预期的错误导致的暂停

因此还有一种状态为阻塞状态

总计创建状态,就绪状态,阻塞状态,运行状态,死亡状态五种.

在实现多线程以后发现,会发生并发问题.这个时候我们需要

使用线程同步来解决遇到的并发问题

同步方法使用关键字synchronized修饰

1,同步代码块

synchronized(this){此处加一个判断;正常要实现的方法体}

2同步方法

首先同步方法需要使用synchronized修饰

public synchronized void 方法名() 

{一个判断

要实现的方法

}

总结:

多线程的好处,

1充分利用CPU资源

2.简化编程模型

3提升用户的体验

多线程要注意的地方

1.一个线程只做一件事

2.多线程是指线程交替占用CPU资源,并非真正的并行执行.

猜你喜欢

转载自www.cnblogs.com/deemohans/p/11737657.html