职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1363|回复: 0

张孝祥 -- 《Java就业培训教程》书中原码 5章

[复制链接]
weisheng 发表于 2006-11-14 07:22 | 显示全部楼层 |阅读模式
《Java就业培训教程》P177的Java原代码
程序清单:ThreadDemo1.java
public class ThreadDemo1
{
        public static void main(String args[])
        {
                new TestThread().run();
                while(true)
                {
                        System.out.println(\"main thread is running\");
                }
        }
}
class TestThread           
{
        public void run()
        {
                while(true)
                {
                        System.out.println(Thread.currentThread().getName() +
                        \" is running\");
                }
        }
}


《Java就业培训教程》P180的Java原代码
程序清单:ThreadDemo3.java
public class ThreadDemo3
{
        public static void main(String args[])
        {
                //new TestThread ().start();
                TestThread tt= new TestThread();//创建TestThread类的一个实例
                Thread t= new Thread(tt);//创建一个Thread类的实例
                t.start();//使线程进入Runnable状态
                while(true)
                {
                        System.out.println(\"main thread is running\");
                }
        }
}
class TestThread implements Runnable //extends Thread
{
        public void run()//线程的代码段,当执行start()时,线程从此出开始执行
        {
                while(true)
                {
                        System.out.println(Thread.currentThread().getName() +
                        \" is running\");
                }
        }
}

《Java就业培训教程》P181的Java原代码
程序清单:ThreadDemo4.java
public class ThreadDemo4
{
        public static void main(String [] args)
        {
                ThreadTest t=new ThreadTest();
                t.start();
                t.start();
                t.start();
                t.start();
        }
}
class ThreadTest extends Thread  
{
        private int tickets=100;
        public void run()
        {
                while(true)
                {
                        if(tickets>0)
                        System.out.println(Thread.currentThread().getName() +
                                \" is saling ticket \" + tickets--);
                }
        }
}


《Java就业培训教程》P186的Java原代码
程序清单:JoinThread.java
public class JoinThread
{
        public static void main(String[] args)
        {
                ThreadTest t=new ThreadTest();
                Thread pp=new Thread(t);
                pp.start();
                int i=0;
                while(true)
                {
                        if(i==100)
                        {                       
                                try
                                {
                                        pp.join();
                                }
                                catch(Exception e)
                                {
                                        System.out.println(e.getMessage());
                            }
                        }
                        System.out.println(\"main Thread \"+i++);
                }
        }
}
class ThreadTest implements Runnable
{
        public void run()
        {
                String str=new String();
                int i=0;
                while(true)
                {
                        System.out.println(Thread.currentThread().getName()+\" \"+i++);
                }
        }
}


《Java就业培训教程》P195的Java原代码
程序清单:ThreadDemo6.java
public class ThreadDemo6
{
        public static void main(String [] args)
        {
                ThreadTest t=new ThreadTest();
                new Thread(t).start();//这个线程调用同步代码块
                t.str=new String(\"method\");
                new Thread(t).start();//这个线程调用同步函数
        }
}
class ThreadTest implements Runnable
{
        private int tickets=100;
        String str = new String (\"\");
        public void run()
        {
                if(str.equals(\"method\"))
                {
                        while(true)
                        {
        sale();
                }
        }
        else
        {
                while(true)
                {
synchronized(str)
                        {
                    if(tickets>0)
{
try
{
            Thread.sleep(10);
}
catch(Exception e)
{
            System.out.println(e.getMessage());
}
System.out.println(Thread.currentThread().getName()+
\" is saling ticket \" + tickets--);
}
}                       
                }
        }
        }
        public synchronized void sale()
        {
            if(tickets>0)
{
try
{
    Thread.sleep(10);
}
catch(Exception e)
{
    System.out.println(e.getMessage());
}
System.out.println(Thread.currentThread().getName()+
\" is saling ticket \" + tickets--);
}
        }
}

《Java就业培训教程》P200的Java原代码
程序清单:Deadlock.java
class A
{
        synchronized void foo(B b)
        {
                        String name=Thread.currentThread().getName();
                        System.out.println(name+ \" entered A.foo \");
                        try
                        {
                                Thread.sleep(1000);
                        }       
                        catch(Exception e)
                        {
                                System.out.println(e.getMessage());
                        }
                        System.out.println(name+ \" trying to call B.last()\");
                        b.last();
        }
        synchronized void last()
        {
                        System.out.println(\"inside A.last\");
        }
}
class B
{
        synchronized void bar(A a)
        {
                        String name=Thread.currentThread().getName();
                        System.out.println(name + \" entered B.bar\");
                        try
                        {
                                Thread.sleep(1000);
                        }
                        catch(Exception e)
                        {
                                System.out.println(e.getMessage());
                        }
                        System.out.println(name + \" trying to call A.last()\");
                        a.last();
        }
        synchronized void last()
        {
                        System.out.println(\"inside A.last\");
        }
}
class Deadlock implements Runnable
{
        A a=new A();
        B b=new B();
        Deadlock()
        {
                        Thread.currentThread().setName(\"MainThread\");
                        new Thread(this).start();
                        a.foo(b);   //get lock on a in this thread.
                        System.out.println(\"back in main thread\");
        }
        public void run()
        {
                        Thread.currentThread().setName(\"RacingThread\");
                        b.bar(a);  //get lock on a in other thread.
                        System.out.println(\"back in other thread\");
        }
        public static void main(String[] args)
        {
                        new Deadlock();
        }
}
《Java就业培训教程》P204的Java原代码
程序清单:ThreadCommunation.java
class Producer implements Runnable
{
        Q q=null;
        public Producer(Q q)
{
        this.q=q;
}
        public void run()
{
        int i=0;
        while(true)
{
        if(i==0)
        {
q.name=\"张孝祥\";
                q.sex=\"男\";
        }
        else
        {
q.name=\"陈琼\";
                q.sex=\"女\";
        }
        i=(i+1)%2;
}
}
}
class Q
{
        String name=\"陈琼\";
        String sex=\"女\";
}
class Consumer implements Runnable
{
        Q q=null;
        public Consumer(Q q)
        {
                this.q=q;
        }
        public void run()
{
        while(true)
{
        System.out.println(q.name + \"---->\" + q.sex);
}
}
}
public class ThreadCommunation
{
        public static void main(String [] args)
        {
                Q q=new Q();
                new Thread(new Producer(q)).start();
                new Thread(new Consumer(q)).start();
        }
}
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-12 06:40 , Processed in 0.140958 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表