java中如何启动一个新的线程

 我来答
皮蛋粯子粥
高粉答主

推荐于2019-08-04 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1398
采纳率:79%
帮助的人:45.2万
展开全部

java开启新线程的三种方法:

方法1:继承Thread类

1):定义一个继承自Java.lang.Thread类的类A.

2):覆盖A类Thread类中的run方法。

3):我们编写需要在run方法中执行的操作:run方法中的代码,线程执行体。

4):在main方法(线程)中,创建一个线程对象并启动线程。

(1)创建线程类对象:                

A类   a  =  new   A类();

(2)调用线程对象的start方法:    

a.start();//启动一个线程

注意:不要调用run方法。如果run方法被称为对象调用方法,则仍然只有一个线程,并且没有启动新线程。

创建启动线程实例:

方法2:实现Runnable接口

1):定义要在java.lang.Runnable接口中实现的类A.请注意,A类不是线程类。

2):覆盖A类Runnable接口中的run方法。

3):我们编写需要在run方法中执行的操作:在run方法中,线程执行。

4):在main方法(线程)中,创建一个线程对象并启动线程。

(1)创建线程类对象:

Thread  t = new Thread(new  A());    

(2)调用线程对象的start方法:

t.start();

代码实例:

方法3:直接在函数体使用

扩展资料:

启动新线程的两种方式对比

继承方式:

1):从设计上分析,Java中类是单继承的,如果继承了Thread了,该类就不能再有其他的直接父类了.

2):从操作上分析,继承方式更简单,获取线程名字也简单.(操作上,更简单)

3):从多线程共享同一个资源上分析,继承方式不能做到.

实现方式:

1):从设计上分析,Java中类可以多实现接口,此时该类还可以继承其他类,并且还可以实现其他接口,设计更为合理.

2):从操作上分析,实现方式稍微复杂点,获取线程名字也比较复杂,得使用Thread.currentThread()来获取当前线程的引用.

3):从多线程共享同一个资源上分析,实现方式可以做到(是否共享同一个资源).

补充:实现方式获取线程名字:

String name = Thread.currentThread().getName();



一数一道
推荐于2017-09-21 · TA获得超过1751个赞
知道小有建树答主
回答量:369
采纳率:75%
帮助的人:217万
展开全部

  启动一个新的线程很简单,直接调用线程类的start()方法就可以了。但是必须是线程类,就是必须实现了Runnable接口的类,当然也可以是继承Thread类因为Thread也实现了Runnable接口。

  Runnable接口有一个run()方法,java虚拟机会自己执行这个方法。你只需要重写这个方法就可以了。但是你不能自己调用这个方法,例如像这样:

Thread thread = new StartThread();

thread.run();

而是应该像这样:

Thread thread = new StartThread();

thread.start();

  你可以试一试下面的程序用thread.run();和thread.start();有什么不同。

public class StartThread extends Thread
{
    @Override
    public void run()
    {
        String name = Thread.currentThread().getName();
        int i = 0;
        for(i = 0;i<10;i++)
        {
            System.out.println(name+": "+i);
        }
        try
        {
            Thread.sleep(1000);
        } catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        for( ;i<20;i++)
        {
            System.out.println(name+": "+i);
        }
    }
    public static void main(String[] args)
    {
        Thread thread = new StartThread();
        thread.start();
//        thread.run();
        try
        {
            Thread.sleep(200);
        } catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        
        String name = Thread.currentThread().getName();
        for(int i = 0;i<10;i++)
        {
            System.out.println(name+": "+i);
        }
    
        
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
少女心Eve
2011-11-07 · 记录美好生活每一天,分享生活新鲜事。
少女心Eve
采纳数:590 获赞数:714

向TA提问 私信TA
展开全部
start()方法是启动一个新的线程,此时线程处在runnable状态,正在等待cpu分配资源即时间片段,
然后使run()方法,让一个线程跑起来,即此时现成真正运行。。 呵呵 我也是初学的
追问
用不用写代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牛明志qF
推荐于2017-09-22 · TA获得超过164个赞
知道答主
回答量:176
采纳率:0%
帮助的人:158万
展开全部
java实现多线程有2种方法:1扩展java.lang.Thread类;2实现java.lang.Runnable接口

下面举个例子,实现Runnable,来实现多线程
public class DoSomething implements Runnable { //实现Runnable接口
public void run() { // 实现run方法
for (int i = 0; i < 5; i++) { // 重复5次
System.out.println("次线程do something");
try {
Thread.sleep(1000); //休眠1秒
} catch (Exception e) {}
}
}

public static void main(String[] args) {
DoSomething dothing = new DoSomething();
Thread t1 = new Thread(dothing);
t1.start(); //这里就是楼主提的问题,启动线程,执行上面写的run()方法
for (int i = 0; i < 5; i++) { //主线程
System.out.println("主线程do something");
try {
Thread.sleep(1000); //休眠1秒
} catch (Exception e) {}
}
}
}
追问
我参加笔试的时候他问我,然后我就简单的答的start();可以么 还是我要打代码
追答
最好说下,java实现多线程有2种方法:1扩展java.lang.Thread类;2实现java.lang.Runnable接口

然后说下分别如何启用线程,说的清楚的话,写代码就不必了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-07-24
展开全部
简单地,
new Thread(){
public void run(){
while(true){
System.out.println(new java.util.Date());
try{ Thread.sleep(1000); } catch(Exception ex){}
}
}
}.start();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式