前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[javaSE] 看博客学习多线程的创建方式和优劣比较和PHP多线程

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

作者头像
唯一Chat
发布2019-09-10 15:25:04
3650
发布2019-09-10 15:25:04
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

通过实现Runnable接口创建线程

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

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

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

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

调用Thread对象的start()方法

代码语言:javascript
复制
package com.tsh.test;

public class Home {

    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable();
        //开启两个线程处理同一个目标对象的资源
        new Thread(myRunnable).start();
        new Thread(myRunnable).start();
    }

}

class MyRunnable implements Runnable {
    private int nums=10;
    @Override
    public void run() {
        while(nums-- > 0){
            System.out.println(Thread.currentThread().getName()+"==="+nums);
        }
        
    }

}

结果:

Thread-0===8

Thread-1===8

Thread-1===6

Thread-0===7

Thread-0===4

Thread-0===3

Thread-0===2

Thread-1===5

Thread-1===0

Thread-0===1

优点:

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

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

缺点:

逻辑稍微复杂

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

继承Thread类

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

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

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

调用Thread对象的start()方法

代码语言:javascript
复制
package com.tsh.test;

public class Home {

    public static void main(String[] args) {
        //开启两个线程
        new MyThread().start();
        new MyThread().start();
    }

}
class MyThread extends Thread{
    private int nums=10;
    @Override
    public void run() {
        while(nums-- > 0){
            System.out.println(this.getName()+"==="+nums);
        }
    }
}

结果:

Thread-0===9

Thread-1===9

Thread-1===8

Thread-0===8

Thread-1===7

Thread-1===6

Thread-0===7

Thread-1===5

Thread-1===4

Thread-0===6

Thread-0===5

Thread-0===4

Thread-0===3

Thread-1===3

Thread-1===2

Thread-0===2

Thread-0===1

Thread-1===1

Thread-0===0

Thread-1===0

优点:

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

缺点:

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

PHP安装pthreads扩展教程

http://my.oschina.net/yanhx/blog/198114

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

http://windows.php.net/downloads/pecl/releases/pthreads/

手册地址

http://php.net/manual/zh/book.pthreads.php

代码语言:javascript
复制
<?php
/**
 * PHP多线程
 */
class MyThread extends Thread{
    public function run(){
        echo $this->getThreadId()."线程开启<br/>";
    }
}
$myThread=new MyThread();
$myThread->start();
$myThread=new MyThread();
$myThread->start();
$myThread=new MyThread();
$myThread->start();
?>

结果:

13104线程开启

6240线程开启

8832线程开启

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-04-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档