黑马程序员技术交流社区

标题: 面试题之 多线程_创建线程 难度系数:4.5 [打印本页]

作者: wolfking0608    时间: 2016-10-9 13:12
标题: 面试题之 多线程_创建线程 难度系数:4.5

/*1 利用线程类的构造函数输出"创建线程4"。  备注当创建一个线程的时候标记为1再次创建一个线程的时候
* 标记为2所以输
* 出的"创建线程4"就是创建的第四个线程 2 在run方法中输出“线程X 计数Y”当执行次数达到6次的时候退出。 
* 备注其中“线程X”为第X个线程“计数Y”为该线程的run方法执行了多少次
* 思路分析:
*  这个K必须是这几个线程共享的
* */
public class 线程题_创建线程 {
        static int num = 6;
        static int k = 1;
     @SuppressWarnings("static-access")
        public static void main(String[] args) {
        for (int i = 1; i <= num; i++) {
                        try {
                                Thread.currentThread().sleep(10);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                         Thread t = new Thread("创建线程" + i) {
                                public void run() {
                                        System.out.println(Thread.currentThread().getName());
                                        System.out.println("线程"+k
                                                        + "  计数" + k);
                                        k++;
                                }

                        };
                        t.start();

                }
        }

        public static void demo01() {
                for (int i = 1; i <= num; i++) {
                        try {
                                Thread.currentThread().sleep(10);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                        final Thread t = new Thread("创建线程" + i) {
                                public void run() {
                                        System.out.println(Thread.currentThread().getName()
                                                        + "  计数" + k);
                                        k++;
                                }

                        };
                        t.start();

                }
        }
}

class MyThread02 extends Thread {
        static int num = 6;
        static int k = 1;
        private String name;

        public MyThread02(String name) {
                super();
                this.name = name;
        }

        public void run() {
                while (true) {
                        synchronized (MyThread02.class) {
                                if (num <= 0) {
                                        break;
                                }
                                System.out.println(Thread.currentThread().getName() + "   计数"
                                                + k++);
                        }
                }
        }
}
作者: 寒冰夜    时间: 2016-10-9 14:02
太难了 看不懂啊  怎么办啊
作者: 读书可以当饭吃    时间: 2016-10-9 14:06
受教了,多线程真的比较难
作者: 勿忘`初心    时间: 2016-10-9 14:25
很给力{:2_35:}{:2_35:}
作者: 此间的少年    时间: 2016-10-9 16:47
我是菜鸟  表示看不懂




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2