Java创建线程的常用方法——简单实用

通常创建线程有三种方式:1.继承Thread;2.实现Runable接口;3.创建Callable和FutureTask创建线程;

有很多博客,看多了,但总觉得缺少点什么。

大概就是创建线程拿来就用的简单实用性吧

在通常的编程习惯中,创建线程的实用方法是:

1.匿名定义new Thread{ }实现其中的run方法


        new Thread(){

            public void run(){
               
                for(int i=0 ;i<16;i++){

                        //模拟网速慢,延时一秒,报错加try/catch

                        Thread.sleep(1000);
                    System.out.println("--------"+i);
                  
                }
               
            }


        }.start();

2.实例化Thread,加实现Runable接口。

        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {

                for(int i=0 ;i<16;i++){

                        //模拟网速慢,延时一秒,报错加try/catch

                        Thread.sleep(1000);
                    System.out.println("--------"+i);
                  
                }
            }
        });


    t1.start();

3.实际编程创建线程,基本就是以上两个套路,再把以上两个套路扩展一下就是

package test;

//继承Thread(),new 子类
public class ThreadTest extends Thread {

  //重写run方法,run方法的方法体就是现场执行体
  public void run() {
      for (int i=0;i < 10; i++) {
          System.out.print(getName() + " " + i+" ,");

      }
  }

  public static void main(String[] args) {
      for (int i = 0; i < 10; i++) {
          System.out.print(Thread.currentThread().getName() + " " + i+" ,");
          if (i == 5) {
              new ThreadTest().run();
              new ThreadTest().run();
          }
      }
  }
}

/*输出结果:main 0 ,main 1 ,main 2 ,main 3 ,main 4 ,main 5 ,Thread-0 0 ,Thread-0 1 ,Thread-0 2 ,
 * Thread-0 3 ,Thread-0 4 ,Thread-0 5 ,Thread-0 6 ,Thread-0 7 ,Thread-0 8 ,Thread-0 9 ,
 * Thread-1 0 ,Thread-1 1 ,Thread-1 2 ,Thread-1 3 ,Thread-1 4 ,Thread-1 5 ,Thread-1 6 ,
 * Thread-1 7 ,Thread-1 8 ,Thread-1 9 ,main 6 ,main 7 ,main 8 ,main 9 ,
 * 
 * 注意:此时两个线程是按线程顺序进行的
 * */
package test;

//实现Runnable接口
public class RunnableTest implements Runnable
{

    public void run()
    {
        for(int i = 0;i <10;i++)
        {
            System.out.print(Thread.currentThread().getName()+" "+i+" ,");
        }
    }
    public static void main(String[] args)
    {
        for(int i = 0;i < 10;i++)
        {
            System.out.print(Thread.currentThread().getName()+" "+i+" ,");
            if(i==5)
            {
                RunnableTest rtt = new RunnableTest();
                new Thread(rtt,"线程1").start();
                new Thread(rtt,"线程2").start();
            }
        }

    }

}

/*输出结果:main 0 ,main 1 ,main 2 ,main 3 ,main 4 ,main 5 ,main 6 ,main 7 ,main 8 ,
 * main 9 ,线程2 0 ,线程2 1 ,线程2 2 ,线程2 3 ,线程2 4 ,线程2 5 ,线程1 0 ,线程1 1 ,线程1 2 ,   线程1 3 ,线程1 4 ,
 * 线程1 5 ,线程1 6 ,线程1 7 ,线程2 6 ,线程1 8 ,线程2 7 ,线程1 9 ,线程2 8 ,线程2 9 ,
 * 
 * 注意:此时的两个线程是随机交替进行的
 * */
 

如果有帮到你,欢迎加入我的Java与Android逆向开发交流QQ群,一起交流学习。

猜你喜欢

转载自blog.csdn.net/ly_xiamu/article/details/83105075