美文网首页
Java创建线程的几种方式

Java创建线程的几种方式

作者: 雨景江水 | 来源:发表于2020-08-22 07:40 被阅读0次

    一.
    Thread.currentThread() : 得到当前的线程对象
    Thread.currentThread().getName() : 得到当前线程对象的名字

    二.继承于Thread类

    //1. 创建一个继承于Thread类的子类
    class MyThread extends Thread {
    //2. 重写Thread类的run()
    @Override
    public void run() {
    for (int i = 0; i < 100; i++) {
    if(i % 2 == 0){
    System.out.println(Thread.currentThread().getName() + ":" + i);
    }
    }
    }
    }

    public class ThreadTest {
    public static void main(String[] args) {
    //3. 创建Thread类的子类的对象
    MyThread t1 = new MyThread();

        //4.通过此对象调用start():①启动当前线程 ② 调用当前线程的run()
        t1.start();
        //问题一:我们不能通过直接调用run()的方式启动线程。
    

    // t1.run();

        //问题二:再启动一个线程,遍历100以内的偶数。不可以还让已经start()的线程去执行。会报IllegalThreadStateException
    

    // t1.start();
    //我们需要重新创建一个线程的对象
    MyThread t2 = new MyThread();
    t2.start();

        //如下操作仍然是在main线程中执行的。
        for (int i = 0; i < 100; i++) {
            if(i % 2 == 0){
                System.out.println(Thread.currentThread().getName() + ":" + i + "***********main()************");
            }
        }
    }
    

    }

    二.Runnable形式

    class Window1 implements Runnable{

    private int ticket = 100;
    
    @Override
    public void run() {
        while(true){
            if(ticket > 0){
                System.out.println(Thread.currentThread().getName() + ":卖票,票号为:" + ticket);
                ticket--;
            }else{
                break;
            }
        }
    }
    

    }

    public class WindowTest1 {
    public static void main(String[] args) {
    Window1 w = new Window1();

        Thread t1 = new Thread(w);
        Thread t2 = new Thread(w);
        Thread t3 = new Thread(w);
    
        t1.setName("窗口1");
        t2.setName("窗口2");
        t3.setName("窗口3");
    
        t1.start();
        t2.start();
        t3.start();
    }
    

    }

    相关文章

      网友评论

          本文标题:Java创建线程的几种方式

          本文链接:https://www.haomeiwen.com/subject/rwvmjktx.html