`

设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

阅读更多
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
java面试题。在网上搜到了代码,放入记事本清出一下格式,就可以在eclipse中运行了;
java 代码
  1.   
  2. public class ThreadTest1{   
  3. private int j;   
  4. public static void main(String args[]){   
  5. ThreadTest1 tt=new ThreadTest1();   
  6. Inc inc=tt.new Inc();   
  7. Dec dec=tt.new Dec();   
  8. for(int i=0;i<2;i++){   
  9. Thread t=new Thread(inc);   
  10. t.start();   
  11. t=new Thread(dec);   
  12. t.start();   
  13. }   
  14. }   
  15. private synchronized void inc(){   
  16. j++;   
  17. System.out.println(Thread.currentThread().getName()+"-inc:"+j);   
  18. }   
  19. private synchronized void dec(){   
  20. j--;   
  21. System.out.println(Thread.currentThread().getName()+"-dec:"+j);   
  22. }   
  23. class Inc implements Runnable{   
  24. public void run(){   
  25. for(int i=0;i<100;i++){   
  26. inc();   
  27. }   
  28. }   
  29. }   
  30. class Dec implements Runnable{   
  31. public void run(){   
  32. for(int i=0;i<100;i++){   
  33. dec();   
  34. }   
  35. }   
  36. }   
  37. }    
分享到:
评论
4 楼 cleven1989 2011-04-13  
受教了,菜鸟……
3 楼 chenchuxin 2008-03-09  
t=new Thread(dec); //前面不要加Thread吗
2 楼 chenchuxin 2008-03-09  
public class ThreadTest1 {
private int j;
public static void main(String args[]){
ThreadTest1 tt=new ThreadTest1();
Inc inc=tt.new Inc();
Dec dec=tt.new Dec();

for(int i=0;i<2;i++){
Thread t=new Thread(inc);
t.start();
t=new Thread(dec);
t.start();
}
}

private synchronized void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc:"+j);
}

private synchronized void dec(){
j--;
System.out.println(Thread.currentThread().getName()+"-dec"+j);
}

class Inc implements Runnable{

public void run(){
for(int i=0;i<100;i++){
inc();
}
}
}

class Dec implements Runnable{   
public void run(){   
for(int i=0;i<100;i++){   
dec();   
}   
}   
}   
}


 



//???   为什么可以写成tt.new   这样子的呢,看不懂,涉及哪方面的知识呢; 
这是实例化一个内部类对象。
//???为什么要加锁呢   不加可以吗     
加锁保护数据在被一个线程访问期间不能被其它线程序访问!你上厕所的时候当然要把门锁好,要不妇女闯进来不坏事了?你完事后再打开门,让别人来用,一样的道理!呵呵~~~
//???currentThread()有什么作用呢是什么方法 //???getname呢 
currentThread方法获得当前在运行的线程,getname获得当前线程的名字!(多看API文档)
1 楼 chenchuxin 2007-12-09  
CSDN上发帖 怄死我了;

相关推荐

    j的多线程加减.zip

    设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

    实现一个数据单元,包括学号和姓名两部分。编写两个线程,一个线程往数据单元中写,另一个线程往出读。要求每写一次就往出读一次。

    实现一个数据单元,包括学号和姓名两部分。编写两个线程,一个线程往数据单元中写,另一个线程往出读。要求每写一次就往出读一次。

    面试编程题

    6、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。 7、列出某个目录下的所有文件。 8、编写一个Hibernate程序,用来获得所有的学生信息。 9、使用Struts2框架来实现页面国际化。 10、写一个...

    多线程设计一个火车售票模拟程序

    java通过并发进程实现火车自动售票程序,假如火车站有100张火车票要卖出去,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况。

    操作系统——实验四 windows中线程的创建和同步控制

    这两个线程共享一个数组A,写线程对数组分别进行10次写操作,每次写操作对A的每个元素赋一个相同的值;读线程对数组分别进行10次读操作,每次读操作输出A中所有元素的值。写出相应代码,并分析运行结果。修改代码,使...

    ****大公司的面试题.doc

    7 说出ArrayList,Vector, LinkedList的存储性能和特性 ...8设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。

    利用单线程完成的生产者与消费者程序

    这是一个生产者与消费者的程序,利用的是单线程,在保证线程安全的情况下,完成了此功能。

    JAVA常见问题

    java 中常见的一些问题.如精典试题。设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

    java线程实验读写文件

    评选班级三好学生,根据三个指标:学习成绩加权平均分(grade)、四六级成绩(englishGrade)、获奖分数(hortation)。...3、编写两个线程:一个线程从文本中读取数据;另一个线程算出该条数据的score

    java面试题(JAVA代码与编程).pdf

    1、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我...9、设计4个线程,其中两个线程每次对j 增加 1,另外两个线程对j每次减少1。写出程序。

    二十一道面试程序.txt

    3. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少 4. 用java代码对XML进行解释。 5. 用java语言实现文件上传操作,并将文件原样读出。 6. 用java语言实现图片的上传,并将图片读出。 7. 用三大...

    线程的编写

    一个小的关于进程的编写,可能不是很完善,还需在升入理解

    J2EE面试题

    2:设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 3:用冒泡法对10个数排序(由小到大)例如: 54,12,-6,6,22,-7,9,0,999,79 4:有一个登录页面,上面有用户名(name),...

    java笔试汇总 经典中的经典!绝对超值!还等什么 下载评分吧!!!

    例如:1、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 public class ThreadTest1{ private int j; public static void main(String args[]){ ThreadTest1 tt=new ThreadTest...

    最全面试笔试整合(比较齐全包括网页,文档。。。)

    8设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 public class ThreadTest1{ private int j; public static void ...

    java华为面试题 JAVA方面共10页

    JAVA方面 面向对象的特征有哪些...设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序;.EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别

    delphi 多线程 读取数据

    用TThread建立独立的单元,将文本文件的数据分割成前后两半部分,用两个线程来分别读取,然后在StringGrid中显示出数据。

    Linux 下多线程数字排序

    父进程创建三个子线程,第一个子线程对数组的前半部分进行选择排序,第二个子进程对数组的后半部分进行选择排序,第三个子线程对两个已经排序好的数组部分进行归并排序,最后当所有子线程结束之后,父进程输出排序好...

    操作系统课程实验.rar

    编写程序创建两个线程:sender 线程和 receive 线程,其中 sender 线程运行函数 sender(), 它创建一个消息队列,然后,循环等待用户通过终端输入一串字符,将这串字符通过消息队 列发送给 receiver 线程,直到用户...

    java面试题及答案.doc

    17. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 18. Java有没有goto? 19. 启动一个线程是用run()还是start()? 20. 应用服务器有那些,列出你所知道的例子? 21. 接口是否可...

Global site tag (gtag.js) - Google Analytics