java编写线程_java编写线程

编写线程有两种方式:一种是创建Thread子类并重写run方法

一种是创建类的时候实现Runnable接口,在myRunnable类中实现

下面为第一种创建Thread子类并重写run方法

packagetest.examples;

public class myThread extendsThread{public voidrun(){

System.out.println("mythread running");

}public static voidmain(String[] args)

{

myThread my= newmyThread();

my.start();//创建一个Thread的匿名子类

Thread thread = newThread(){public voidrun(){

System.out.println("Thread running");

}

};

thread.start();/** 尽管启动线程是有顺序的,但是执行线程的顺序并非是有序的

* 因为线程是并发执行而非顺序

* JVM与操作系统一起决定了线程的执行顺序,与线程的启动顺序并非一致*/System.out.println(Thread.currentThread().getName());for(int i=0;i<10;i++){new Thread(""+i){public voidrun(){

System.out.println("Thread" + getName() + "running");

}

}.start();

}

}

}

创建类的时候实现Runnable接口

packagetest.examples;public class myRunnable implementsRunnable{

@Overridepublic voidrun() {

System.out.println("myRunnable running");

}public static voidmain(String[] args){//需要在Thread类的构造函数中传入myRunnable的实例对象

Thread thread = new Thread(newmyRunnable());

thread.start();//创建一个实现了Runnable接口的匿名类

Runnable my = newRunnable(){public voidrun(){

System.out.println("Runnable running");

}

};

Thread thread1= newThread(my);

thread1.start();

}

}

两种方法并没有好坏之分,线程池的有效管理实现了Runnable接口的线程,如果线程池满了新的线程就会排队等候执行,

直到线程池空闲出来为止。如果线程是通过实现Thread子类实现的,会复杂一些

常见错误:调用run()方法而非start()方法

myThread my = new myThread();

my.run();

起初不会觉得什么,事实上run()方法并非是由刚创建的新线程所执行的,而是被新创建新线程的当前线程所执行,也就是被执行上面两行代码的线程所执行想要让创建的新线程执行run()方法,必须调用新线程的start()方法

创建新线程的时候可以给线程起个名字,有助于区分不同的线程,如下:

myRunnable runnable = new myRunnable();

Thread thread = new Thread(runnable,"new Thread");

thread.start();

System.out.println(thread.getName());

Thread.currentThread();可以得到当前线程的引用

String threadName = Thread.currentThread().getName();得到当前线程的名字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值