黑马程序员技术交流社区

标题: 有会做的嘛 [打印本页]

作者: 木易延    时间: 2016-2-18 19:32
标题: 有会做的嘛
创建一个类,类名为MyThiead,并实现Runnable接口,以及完成如下操作:
        1,创建一个main方法,并在main方法中使用for创建5个线程,并使用线程类的构造方法,输出“创建线程x(线程x为每个线程的标识或者名称)”
        2,在控制台打印并输出“线程x : 计数y”



作者: 爱好奇    时间: 2016-2-18 19:32
buzhiddaoaaaaaaaaaaaa
作者: wygsqsj    时间: 2016-2-18 20:12
什么题意啊?怎么读不明白,是线程每创建出一个的时候就打印“创建线程x”?大体做了一个,你看看符不符合题意,我没搞明白,具体到底干什么?
  1. class MyThread implements Runnable{
  2.        
  3.         private int num;
  4.         public void run()
  5.         {
  6.                 while(true)
  7.                 {
  8.                         //多线程操作了共享资源num,加同步
  9.                         synchronized(MyThread.class)
  10.                         {
  11.                                 try {
  12.                                         Thread.sleep(300);
  13.                                 } catch (InterruptedException e) {
  14.                                         // TODO Auto-generated catch block
  15.                                         e.printStackTrace();
  16.                                 }
  17.                                 if(num<10)
  18.                                         System.out.println(Thread.currentThread().getName()+":计数"+num++);
  19.                                 else
  20.                                         return;
  21.                         }
  22.                 }
  23.         }
  24.        
  25. }
  26. public class ReflectDemo1 {

  27.         public static void main(String[] args) {
  28.                 MyThread mt = new MyThread();
  29.                         for(int i = 0;i<5;i++)
  30.                         {
  31.                                
  32.                                 new Thread(mt,"线程"+i).start();
  33.                         }
  34.                
  35.         }

  36. }
复制代码

作者: liuxiaoye    时间: 2016-2-18 20:47
学习学习
作者: heimagirls    时间: 2016-2-19 17:01
wygsqsj 发表于 2016-2-18 20:12
什么题意啊?怎么读不明白,是线程每创建出一个的时候就打印“创建线程x”?大体做了一个,你看看符不符合 ...

请问为什么要加同步????

作者: wygsqsj    时间: 2016-2-20 00:04
heimagirls 发表于 2016-2-19 17:01
请问为什么要加同步????

不加同步的话,当num的值为9的时候,线程a判断if(num<10)之后还没打印,cpu切换到线程b,线程b判断num的值依旧是9,然后打印出来了,这时候线程a被切到之后,继续向下输出,num的值就等于10了,只要多个线程操作共享资源就得考虑同步问题。
作者: heimagirls    时间: 2016-2-20 13:55
wygsqsj 发表于 2016-2-20 00:04
不加同步的话,当num的值为9的时候,线程a判断if(num

谢谢,懂了




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