A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我把我自己感觉有问题的地方写了一下,关于线程的一些实用的东西,供大家参考,一同进步,一起共勉。
一个是实现Runnable接口实现run()方法,一个是new Thread() 实现run() 方法和继承extends Thread 实现run()方法
小例子见笑:

1、继承Thread 实现run()方法
public class ThreadDemo01 {
    public static void main(String[] args) {
        Thread t1 = new Person1();
        Thread t2 = new Person2();
        t1.start();     //启动线程调用start()方法
        t2.start();    //两个线程是异步的,不是同步的。
      
    }
}
class Person1 extends Thread{
    public void run(){
        for(int i = 0;i<1000;i++){
            System.out.println("你是谁");
        }
    }
}
class Person2 extends Thread{
    public void run(){
        for(int i = 0;i<1000;i++){
            System.out.println("我是收电费的");
        }
    }
}

2、实现Runnable接口实现run()方法
public class ThreadDemo02 {
    public static void main(String[] args) {
        Runnable runnable1 = new Runnable1();
        Runnable runnable2 = new Runnable2();
        Thread t1 = new Thread(runnable1);
        Thread t2 = new Thread(runnable2);
        t1.start();
        t2.start();
    }
}
class Runnable1 implements Runnable{
    public void run(){
        for(int i = 0;i<1000;i++){
            System.out.println("你是谁呀");
        }
    }
}
class Runnable2 implements Runnable{
    public void run(){
        for(int i = 0;i<1000;i++){
            System.out.println("我是修电表的");
        }
    }
}
3、new Thread() 实现run() 方法
public class DaemonThreadDemo {
    public static void main(String[] args) {
        Thread rose = new Thread(){
            public void run(){
                for(int i = 0;i<10;i++){
                    System.out.println("rose:let me go");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                System.out.println("rose:啊啊啊啊啊啊AAAAAA");
                System.out.println("扑通");
            }
        };
        Thread jack = new Thread(){
            public void run(){
                while(true){
                    System.out.println("jack:you jump!i jump");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        jack.setDaemon(true);    //设置为后台线程,在写在start()方法之前
        rose.start();
        jack.start();
    }
}

评分

参与人数 1技术分 +1 收起 理由
船长 + 1 船长来赞一个!

查看全部评分

7 个回复

正序浏览
huoxy 中级黑马 2014-11-26 16:24:44
8#
毕老师在多线程最后的个视频里讲了用匿名内部类实现!如果这算第三种的话,还有第四种,通过实现Runnable接口的匿名内部类也算一种,是吧:lol
回复 使用道具 举报
mmppp 中级黑马 2014-11-26 14:47:28
7#
匿名 哈哈 还是好想法,nice
回复 使用道具 举报
LFW 中级黑马 2014-11-26 12:58:13
地板
第三个是匿名类、、跟第一个一样的。。
回复 使用道具 举报
匿名内部了,,,,
回复 使用道具 举报
楼主不要理解错了,其实还是两种,只是你写的有一个是匿名的。
回复 使用道具 举报
cbb 中级黑马 2014-11-26 02:29:39
藤椅
我是来看第三种的~~~结果!是匿名!不过!楼主加油!嘿嘿
回复 使用道具 举报
第三种和第一种是一样的,都是继承Thread类。后者不过是匿名内部类,覆盖了run()方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马