实现多线程

来源:互联网 发布:懒猫营销软件 编辑:程序博客网 时间:2024/06/05 00:42

“`
这里写代码片
package day23Thread;
/*
* 两种方式实现多线程
* 创建新执行线程有两种方法。
* A一种方法是将类声明为 Thread 的子类。
* B该子类应重写 Thread 类的 run 方法。
* C接下来可以分配并启动该子类的实例。(创建对象)
* D启动线程
*
*
*
* 该类要重写run()方法,
* 是因为不是所有的代码都要被线程执行
* 而为了区分哪些代码能被线程执行,java提供了Thread类中的run()方法,
* 用来包含那些要被线程执行的代码
*/
public class MyThread extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
//一般来说,被线程执行的代码肯定是比较耗时的,所以我们用循环改进
for(int i=0;i<200;i++){
System.out.println(getName()+”: “+i);
}

}

}

“`package day23Thread;

public class MyThreadDemo {
public static void main(String[] args) {
//创建线程对象
MyThread my=new MyThread();
//启动线程
//my.run();
//调用run()方法为什么是单线程的呢,因为直接调用它与其他的普通方法调用没有什么不同
//所以看到的是单线程的
//要想看到不一样的用start()方法

    //IllegalThreadStateException:非法的线程状态异常    //因为这个相当于my线程被调用了两次,而不是两个线程启动    //所以想要两个线程,就要创建两个线程对象    MyThread my1=new MyThread();    //设置线程名称    my1.setName("kitty");    my.setName("Tom");    my.start();    my1.start();    /*     * 如何获取main方法的所在线程对象的名称、     * public static Thread currentThread()返回对当前正在执行的线程对象的引用。      * 也是针对不是Thread类的子类中如何获取线程对象名称     */    System.out.println(Thread.currentThread().getName());}

}

/*
* 如何获取线程的名称
* public final String getName()
*
*
* public Thread() {
init(null, null, “Thread-” + nextThreadNum(), 0);
}

   如何设置线程的名称   public final void setName(String name)改变线程名称,使之与参数 name 相同。 

*/

0 0