Java中的多线程

Java中创建主线程有两种方法


一、通过继承Thread类

1、创建一个类,让其继承Thread类,然后复写该类的run()方法。

2、建立Thread子类对象的同时,线程也被创建。

3、通过调用子类的start()方法执行该子线程。start()方法在执行时会调用run()方法。

不能直接调用子类run()方法。如果直接调用子类run()方法,则创建的线程没有执行,run()方法仍然实在main()方法这个线程中执行的。

每个线程都有自己独立的编号,默认的表示方式为Thread--标号,标号从0开始。

获取当前线程名称的方法:Thread.currentThread();//返回一个静态Thread类型的值。

二、通过实现Runnable接口

1、定义一个类,并让他implements Runnable接口

2、覆盖Runnable接口中的run()方法。

将线程要运行的代码存放在run()中。

3、通过Thread类建立线程对象。

4、将Runnable接口的子类对象作为实际蚕食传递给Thread类的构造函数。

why?

因为自定义的run()方法所属的对象时Runnable接口的子类对象,所以要让线程去执行制定的对象的run()方法,就必须明确该方法所属对象。

5、通过Thread类的start()方法开启一个子线程。

三、实现Runnable接口方式和继承Thread类方式有什么区别?

实现方式的好处:避免了单继承的局限性。

在定义线程时,建议使用实现方式。

四、在使用多线程的时候容易产生数据安全性问题,可以在可能出现安全性问题的代码块部分使用synchronized关键字,方法一,将这部分代码块放在synchronized的大括号中。

synchronized(this)

{

//代码块

}

方法二、创建synchronized修饰函数,则函数内的代码全都是同步执行。

public  synchronized void fun()

{

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值