加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

[javaSE] 看博客学习多线程的创建方式和优劣比较和PHP多线程

发布时间:2020-05-25 03:16:31 所属栏目:PHP 来源:互联网
导读:通过实现Runnable接口创建线程获取Thread对象,new出来,构造函数参数:Runnable对象Runnable是一个接口,定义一个类MyRunnable实现Runnable接口,实现run()方法,重写run()方法,编写业务逻辑调用Thread.currentThread()方法获取当前Thread对象调用Thread对

通过实现Runnable接口创建线程

获取Thread对象,new出来,构造函数参数:Runnable对象

Runnable是一个接口,定义一个类MyRunnable实现Runnable接口,实现run()方法,

重写run()方法,编写业务逻辑

调用Thread.currentThread()方法获取当前Thread对象

调用Thread对象的start()方法

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> Home {

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    MyRunnable myRunnable </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; MyRunnable();
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;开启两个线程处理同一个目标对象的资源</span>
    <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Thread(myRunnable).start();
    </span><span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Thread(myRunnable).start();
}

}

<span style="color: #0000ff;">class MyRunnable <span style="color: #0000ff;">implements<span style="color: #000000;"> Runnable {
<span style="color: #0000ff;">private <span style="color: #0000ff;">int nums=10<span style="color: #000000;">;
@Override
<span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> run() {
<span style="color: #0000ff;">while(nums-- > 0<span style="color: #000000;">){
System.out.println(Thread.currentThread().getName()+"==="+<span style="color: #000000;">nums);
}

}

}

结果:

Thread-0===1

优点:

线程类只是实现了Runnable接口,还可以继承别的类

可以多个线程共享同一个目标对象

缺点:

逻辑稍微复杂

获取当前线程对象只能使用Thread.currentThread()方法

继承Thread类

定义一个类MyThread继承Thread,重写run()方法

在run()方法中编写业务逻辑,使用this就是当前Thread对象

获取Thread对象,通过new MyThread()

调用Thread对象的start()方法

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> Home {

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;开启两个线程</span>
    <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; MyThread().start();
    </span><span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; MyThread().start();
}

}
<span style="color: #0000ff;">class MyThread <span style="color: #0000ff;">extends<span style="color: #000000;"> Thread{
<span style="color: #0000ff;">private <span style="color: #0000ff;">int nums=10<span style="color: #000000;">;
@Override
<span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> run() {
<span style="color: #0000ff;">while(nums-- > 0<span style="color: #000000;">){
System.out.println(<span style="color: #0000ff;">this.getName()+"==="+<span style="color: #000000;">nums);
}
}
}

<p align="left">


<p align="left">结果:


<p align="left">Thread-0===9


<p align="left">Thread-1===9


<p align="left">Thread-1===8


<p align="left">Thread-0===8


<p align="left">Thread-1===7


<p align="left">Thread-1===6


<p align="left">Thread-0===7


<p align="left">Thread-1===5


<p align="left">Thread-1===4


<p align="left">Thread-0===6


<p align="left">Thread-0===5


<p align="left">Thread-0===4


<p align="left">Thread-0===3


<p align="left">Thread-1===3


<p align="left">Thread-1===2


<p align="left">Thread-0===2


<p align="left">Thread-0===1


<p align="left">Thread-1===1


<p align="left">Thread-0===0


<p align="left">Thread-1===0

优点:

编写简单,this代表当前Thread对象

缺点:

线程类不能再继承其他父类

PHP安装pthreads扩展教程

注意扩展所对应的php版本号,windows系统扩展下载地址

手册地址

getThreadId()."线程开启
"=->=->=->?>

结果:

13104线程开启

6240线程开启

8832线程开启

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读