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

通过实现Runnable接口创建线程

 

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

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

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

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

调用Thread对象的start()方法

复制代码
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()方法

复制代码
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

复制代码
<?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线程开启

posted @   唯一客服系统开发笔记  阅读(467)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示
1
chat with us