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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 依然如故   /  2014-9-11 10:11  /  9152 人查看  /  53 人回复  /   6 人收藏 转载请遵从CC协议 禁止商业使用本文

学习一下~~
回复 使用道具 举报

你这代码有点问题吧,没完整的实现题目的要求把,
回复 使用道具 举报
new999 中级黑马 2014-10-24 20:56:14
43#
坚持525 发表于 2014-10-24 20:47
你这代码有点问题吧,没完整的实现题目的要求把,

这都被你发现啦,不错啊。写的时候,没有看清题目,随手写上的
回复 使用道具 举报
马嘉 中级黑马 2014-10-25 11:30:17
44#
楼主被录取了吗
回复 使用道具 举报
晕死我做了一晚上,最后发现不用两个线程之间切换郁闷
回复 使用道具 举报
这题好像没那么麻烦吧
回复 使用道具 举报
回复 使用道具 举报
本帖最后由 水壶vs兔子 于 2015-9-9 16:18 编辑
  1. import java.util.ArrayList;
  2. import java.util.Random;

  3. /*
  4. * 声明一个共享数组,起两个线程,两个线程分别隔一段时间(可以写一个随机数),给数组中添加数据,每一个线程为数组添加3个数据即可。
  5. *
  6. * 思路:
  7. *                 1、创建一个ArrayList集合,准备接收数据
  8. *                 2、创建一个类,继承Runnable接口
  9. *                 3、加同步锁
  10. *                 4、重写run方法
  11. *                         A:用sleep()每隔一段时间才添加数据
  12. *                         B:使用Random类的方法产生随机数
  13. *                 5、try、catch异常(没时间throws也行)
  14. *                 6、遍历添加3个元素到集合中
  15. *                 7、设置两个线程启动的条件
  16. *                         A:for循环控制线程只启动两次
  17. *                         B:if判断到底是启动线程1还是线程2
  18. *                                 a:  n == 1,启动线程1
  19. *                                 b:  n != 1,启动线程2
  20. *                 8、启动线程
  21. *                         A:start()
  22. *                         B:join()
  23. *                 9、将集合toString
  24. *                 10、打印字符串
  25. */

  26. public class Test15_Runnable {
  27.         static ArrayList<Integer> al = new ArrayList<Integer>();

  28.         static class TestRunnable implements Runnable {

  29.                 @Override
  30.                 public synchronized void run() {
  31.                         try {
  32.                                 Thread.sleep(1000);
  33.                         } catch (InterruptedException e) {
  34.                                 e.printStackTrace();
  35.                         }
  36.                         for (int x = 0; x < 3; x++) {
  37.                                 al.add(new Random().nextInt(10));
  38.                         }
  39.                 }

  40.         }

  41.         public static void main(String[] args) throws InterruptedException {
  42.                 TestRunnable tr = new TestRunnable();

  43.                 Thread t1 = new Thread(tr);
  44.                 Thread t2 = new Thread(tr);

  45.                 int n = 1;
  46.                 for (int y = 0; y < 2; y++) {
  47.                         if (n == 1) {
  48.                                 t1.start();
  49.                                 t1.join();
  50.                         } else {
  51.                                 t2.start();
  52.                                 t2.join();
  53.                         }
  54.                         n = 0;
  55.                 }
  56.                
  57.                 //最终版
  58.                 String s = al.toString();
  59.                 System.out.println(s);

  60. //                for (int ii : al) {
  61. //                        System.out.println(ii);
  62. //                }
  63.         }
  64. }
复制代码


感觉这样写好想就可以了吧,不对的地方请大家指正!
回复 使用道具 举报
哈哈哈哈哈哈哈哈
回复 使用道具 举报
tommy 发表于 2014-9-11 12:36
package cn.sina.pardon.demo;

import java.util.Random;

线程还得好好复习下,看不懂了
回复 使用道具 举报

写的很正确。。
回复 使用道具 举报
package com.play;

import java.util.Random;

public class AddArray {

        public static void main(String[] args) {
                Add add = new Add();
                new Thread(add, "线程1 :").start();
                new Thread(add, "线程2 :").start();

        }

}
class Add implements Runnable{
       
        int[] arr = new int[6];
        int i = 0;
        private void addArray(int [] arr){
                while(true){
                        synchronized(new Object()){
                                if(i < 6){
                                        try{
                                                wait(1000);
                                        } catch (InterruptedException e){
                                                e.printStackTrace();
                                        }
                                        arr[i] = new Random().nextInt(6);
                                        System.out.println(Thread.currentThread().getName() + "arr[" + i + "] = " + arr[i]);
                                        i++;
                                        notify();
                                }
                        }
                }
        }
        public synchronized void run(){
                addArray(arr);
        }
}
回复 使用道具 举报
热火程序猿 发表于 2016-7-5 09:05
package com.play;

import java.util.Random;

不知道这个交替打印怎么样,就是有个小毛病,线程停不下来,求大神解答!!!
回复 使用道具 举报
123
您需要登录后才可以回帖 登录 | 加入黑马