开辟线程的两种方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开辟线程的两种方式相关的知识,希望对你有一定的参考价值。
/**- 自定义执行单元的两种方式
- 区别
- runnable避免了单继承的局限性
- runnable资源可以被独立共享
- 多线程如何找问题
1.明确哪些代码是多线程运行代码
2.明确哪些是共享数据
3.明确多线程代码中哪些语句是操作共享数据的 - @author WangShuang
-
/
public class Test {
public static void main(String[] args) {
/MyThread t0=new MyThread();
MyThread t1=new MyThread();
t0.start();
t1.start();//出现两百张票
*/
//t0.start();//java.lang.IllegalThreadStateException/*MyRunnable r=new MyRunnable(); Thread rt0 = new Thread(r); Thread rt1 = new Thread(r); rt0.start(); rt1.start();*/
}
}
/** - 方式1继承Thread
- 如果想实现两个窗口买票的话
- MyThread t0=new MyThread();
MyThread t1=new MyThread();
t0.start();
t1.start();//出现两百张票
如果在tick前面加static能解决问题,但是生命周期又太长,所以采用方式2 - @author Administrator
-
/
class MyThread extends Thread{
/static 加static不好 生命周期太长*/ int tick = 100;br/>@Override
public void run() {
while(tick>0){
System.out.println(tick--);
}
}
}
/** - 方式2实现Runnable接口
- @author Administrator
-
*/
class MyRunnable implements Runnable {
int tick = 100;br/>@Override
public void run() {
synchronized (new Object()) {
while(tick>0){
System.out.println(" "+this.toString());
System.out.println(Thread.currentThread().getName()+" "+tick--);
}
}
}
}
以上是关于开辟线程的两种方式的主要内容,如果未能解决你的问题,请参考以下文章