全国咨询/投诉热线:400-618-4000

java多线程

更新时间:2019年01月10日15时01分 来源:传智播客 浏览次数:

java多线程的实现方式:
1、继承Thread
[Java] 纯文本查看 复制代码
1
2
3
public Thread(Runnable target) {
 init(null, target, "Thread-" + nextThreadNum(), 0);
 }
2、实现Runable

这是Runable的源码所以Runable需要重写run方法

[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<font style="color:rgb(79, 79, 79)"><font face="&quot"><font style="font-size:16px">@FunctionalInterface[/size][/font][/color][/p]public interface Runnable {
    /**
     * When an object implementing interface <code>Runnable</code> is used
     * to create a thread, starting the thread causes the object's
     * <code>run</code> method to be called in that separately executing
     * thread.
     * <p>
     * The general contract of the method <code>run</code> is that it may
     * take any action whatsoever.
     *
     * @see     java.lang.Thread#run()
     */
    public abstract void run();
}
</font></font></font>
3、接口通过FutureTask包装器来创建Thread线程
[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
特点:可以返回值
 
public class FutureTask<V> implements RunnableFuture<V>
public interface RunnableFuture<V> extends Runnable, Future<V> {
使用Callable方式,需要Futertask的支持
 
    public FutureTask(Callable<V> callable) {
    if (callable == null)
        throw new NullPointerException();
    this.callable = callable;
    this.state = NEW;       // ensure visibility of callable
}

死锁问题:
避免死锁的几种常见方法:1、避免一个线程同时获取多个锁2、避免一个线程在锁内同时占用多个资源3、尝试使用定时锁,使用lock.tryLock(timeout)来替代使用内部锁机制。4、对于数据库锁,加锁和解锁必须在一个数据库连接里,负责会出现解锁失败的情况。



作者:传智播客JavaEE培训学院

首发:http://java.itcast.cn

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额