java多线程图解_java多线程实例图解讲解

1、继承Thread类

Java提供了对线程这类事物的描述——Thread类。

a.     定义类继承Thread;

b.     复写Thread类中的run()方法。

目的:将自定义代码块存储在run方法中。

Tread类中定义了一个run方法,用于存储线程要运行的代码块。就相当于主线程代码存放在main中。

c.      调用线程的start方法

start:启动线程——–à调用run方法

开启线程的目的是为了运行指定代码,父类提供了空间,只需要沿袭父类功能,复写父类内容即可。因此,需要继承Thread,把run()的内容复写掉,建立线程要运行的代码。

2、声明实现Runnable接口的类

A.定义类,实现Runnable接口

[java] view plaincopy

{

private int tick = 100;

public void run()

{

while(true)

{

if (tick > 0)

{

System.out.println(Thread.currentThread().getName()+”——-sale:”+tick–);

}

}

}

}

B. 覆盖Runnable接口中的run方法

线程代码存放在接口的子类的run方法中

C. 通过Thread类建立线程对象

Ticket  t = new Ticket();

D.将Runnable接口的子类对象(即刚刚new的Ticket())作为实际参数传递给Thread类的构造函数

Thread t1 = new Thread(t);

Thread t2 = new Thread(t);

Thread t3 = new Thread(t);

Thread t4 = new Thread(t);

自定义的run方法所属的对象是Runnable接口的子类对象。因此,要让线程去指定的

象的run方法。必须明确run方法所属的对象。

E. 调用Thread类的start方法开启线程并调用Runnable接口的run方法。

t1.start();

t2.start();

t3.start();

t4.start();

三、多线程的安全问题

安全问题原因:

当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,

还未执行完,另一个线程参与进来执行,导致共享数据错误。

解决办法:

对多条【操作共享数据】的语句,一个线程在执行时,其他线程不可以参与执行,只能让一个线程先执行完。

Java对于多线程的安全问题提供了专业的解决方式——同步代码块。

synchronized()

{

}

对象如同锁,持有锁的线程才可以在同步中执行。没有持有锁的线程,即使获取cpu的权限,也无法进入同步代码块执行。

同步的前提:

Ø  必须要有两个或以上的线程。

Ø  必须是多个线程使用同一个锁。

必须保证同步中只能有一个线程

同步的好处:解决了多线程的安全问题。

同步的弊端:消耗了资源——在执行代码以外多了一个判断锁的过程(每次都判断)

8556102ad4b8355bbf0789d5520e89dc.png

[java] view plaincopy

 
 

四、多线程运行状态

五、获取线程对象以及名称

线程有自己的(默认)名称:Thread-编号    该编号从0开始。

currentThread()返回当前线程对象。currentThread()方法是静态的,说明它里面没有访问到特有对象数据。

static Thread currentThread():获取当前线程对象。

getName():获取线程名称。

设置线程名称:setName或者构造函数。(设置名称的意义:获取当前运行线程的名称,并进行判断)

注:线程1和线程2里的x不是同一个。

l  Thread-0进来,栈内存会给Thread-0分配内存空间–à此空间里有一个run()方法,run()方法里有一个x;

l  Thread-1进来,栈内存给Thread-1分配内存空间–à此空间也有一个run方法,run方法里也有一个x。

六、  售票程序

创建一个对象,里面都有100张票–>

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值