通过实现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线程开启

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

  1. [javaSE] 看博客学习java并发编程

    共享性 多线程操作同一个数据,产生线程安全问题 新建一个类ShareData 设计一个int 型的成员变量count 设计一个成员方法addCount(),把count变量++ 在main函数中开启多 ...

  2. [PHP] 看博客学习观察者模式

    具体应用场景是,当subject的某个动作需要引发一系列不同对象的动作(比如你是一个班长要去通知班里的某些人),与其一个一个的手动调用触发的方法(私下里一个一个通知),不如维护一个列表(建一个群),这 ...

  3. [PHP] 看博客学习插入排序

    定义数组长度变量$len,使用count()函数,参数:数组 for循环数组,条件:从第二个开始,遍历数组,循环内 定义临时变量$temp,赋值当前元素 for循环数组,条件:遍历当前元素前面的所有元 ...

  4. [android] 看博客学习hashCode()和equals()

    equals()是Object类提供的一个方法,众所周知,每一个java类都继承自Object,所以说每一个对象都有一个equals()方法,我们在用这个方法时却一般重写这个方法 Object类中eq ...

  5. [android] 看博客学习Android常见的几种RuntimeException

    异常分为两种: 1.编译时异常 当编译时异常抛出时,需要对其进行处理声明,否则编译不通过 2.运行时异常 编译时不检测,运行时 如果抛出,程序会立刻停止 NullPointerException 空指 ...

  6. [css3] 看博客学习别人的旋转的星球

    定义一个div 太阳轨道sunline,边框显示出来,定义position为relative #sunline{ width: 500px; height: 500px; border:2px sol ...

  7. FPGA一个博客学习

    FPGA一个博客学习 http://bbs.ednchina.com/BLOG_PERSONALCAT_100185_2001619.HTM

  8. 牛客网Java刷题知识点之什么是进程、什么是线程、什么是多线程、多线程的好处和弊端、多线程的创建方式、JVM中的多线程解析、多线程运行图解

    不多说,直接上干货! 什么是进程? 正在进行中的程序(直译). 什么是线程? 就是进程中一个负责程序执行的控制单元(执行路径). 见 牛客网Java刷题知识点之进程和线程的区别 什么是多线程? 一个进 ...

  9. Java中的多线程的创建方式

    首先理清几个基本概念: 程序:为完成特定任务,用某种语言编写的一组指令的集合.即一段静态的代码(还没运行起来) 进程:是程序的一次执行过程,也就是说程序运行起来了,加载到了内存中,并占用了cpu的资源 ...

随机推荐

  1. tfs查看最近签入记录及文件

    在团队资源管理=>源代码管理资源管理器=>选择某个最近签入的文件夹=>右键=>查看历史记录=>双击某个文件夹 就能看到最近变更集文件

  2. nginx,gunicorn常用命令

    nginx 启动: 在下载nginx的目录下直接输入nginx回车 停止: nginx -s stop 重启: nginx -s reload 查看当前运行进程: ps -ef | grep ngin ...

  3. centos7 安装cmake

    安装cmake之前,记得升级gcc,请参考centos7 升级GCC版本到7.3.0 #shell 太简单,懒得解释 wget https://cmake.org/files/v3.11/cmake- ...

  4. 原生js,jquery ajax请求以及jsonp的调用

    ajax    是用来处理前后端交互的技术,可以改善用户体验,其本质是    XMLHttpRequest,异步访问服务器并发送请求数据,服务器返回响应的数据,以页面无刷新的效果改变页面中的局部内容  ...

  5. SQLServer——SQLServer链接外部数据源

    学习链接:https://www.cnblogs.com/licin/p/6244169.html 一.新建ODBC数据源 1.打开控制面板→管理工具→ODBC数据源→系统DSN 2.添加新系统数据源 ...

  6. Mysql 索引原理及优化

    本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接. 一.摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引 ...

  7. Web API 2 对于 Content-Length 要求严格

    最近在做一个工具,里面有一个发起http请求的操作,虽然工具不是用.NET写的,但是测试用服务器软件是.NET写的.在这里选择了ASP.NET MVC和Web API 2. 首先预定义Student与 ...

  8. nginx配置文件 nginx.conf 说明

    #user nobody; #开启进程数 <=CPU数  worker_processes 1; #错误日志保存位置 #error_log logs/error.log; #error_log ...

  9. 【从0到1学Web前端】CSS定位问题三(相对定位,绝对定位) 分类: HTML+CSS 2015-05-29 23:01 842人阅读 评论(0) 收藏

    引子: 开始的时候我想先要解决一个问题,怎么设置一个div盒子撑满整个屏幕? 看下面的html代码: <body> <div id="father-body"&g ...

  10. 02-02:springboot 整合filter

    1.通过注解扫描完成Filter组件的注册 1.1编写filter (添加拦截的servlet) //@WebFilter(filterName = "FirstFilter",u ...