2007-12-03
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
关键字: 4个线程设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
java面试题。在网上搜到了代码,放入记事本清出一下格式,就可以在eclipse中运行了;
java 代码
- 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();
- }
- }
- }
- }
评论
chenchuxin
2008-03-09
t=new Thread(dec); //前面不要加Thread吗
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文档)
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文档)
chenchuxin
2007-12-09
CSDN上发帖 怄死我了;
发表评论
- 浏览: 20850 次
- 性别:

- 来自: 武汉

- 详细资料
搜索本博客
链接
最新评论
-
学习J2ME可以从事的工作种 ...
关于J2ME程序员新手开发入门的几大要点 一、J2ME中需要的Java基础知 ...
-- by chenchuxin -
学习J2ME可以从事的工作种 ...
J2ME学习之温故而知新篇 学习J2ME最重要的部分是掌握J2ME的体系结构 ...
-- by chenchuxin -
学习J2ME可以从事的工作种 ...
目前從事第二個選項。糾正:應用開發一樣要熟練掌握低級界面編程。
-- by hzxdark -
(转)如何学习J2EE
好在亡羊不牢,为时不晚;
-- by chenchuxin -
(转)如何学习J2EE
有自己的思想 不要问别人怎么学 吸收正确的思想 别人也许是公车上的人呢; 有个职 ...
-- by chenchuxin






评论排行榜