通过实现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;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) {
MyRunnable myRunnable </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> MyRunnable();
</span><span style="color: #008000;">//</span><span style="color: #008000;">开启两个线程处理同一个目标对象的资源</span>
<span style="color: #0000ff;">new</span><span style="color: #000000;"> Thread(myRunnable).start();
</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> 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;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) {
</span><span style="color: #008000;">//</span><span style="color: #008000;">开启两个线程</span>
<span style="color: #0000ff;">new</span><span style="color: #000000;"> MyThread().start();
</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> 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系统扩展下载地址
手册地址
MyThread ->getThreadId()."线程开启 "=->=->=->?>
结果:
13104线程开启
6240线程开启
8832线程开启 (编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|