zoukankan      html  css  js  c++  java
  • [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线程开启

  • 相关阅读:
    Ambari源代码分析之总览
    最简单的修改HashMap value值的方法
    机器学习 Hidden Markov Models 1
    OpenCV坐标系与操作像素的四种方法
    OpenCV2.4.13+VS2012开发环境配置
    OpenCV——PS滤镜算法之 Ellipsoid (凹陷)
    OpenCV——PS滤镜算法之 Ellipsoid (凸出)
    如何快糙好猛的使用Shiqi.Yu老师的公开人脸检测库(附源码)
    伊斯坦布尔的流浪 (三)
    伊斯坦布尔的流浪 (一)
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5446527.html
Copyright © 2011-2022 走看看