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群,一起交流学习。