今天在教材上抄了一道例题:
public class testjava1
{
public static void main(String[] args)
{
Threadtest t=new Threadtest();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
}class Threadtest implements Runnable
{
private int ticket=20;
public void run()
{
while(true)
{
if (ticket>0)
System.out.println(Thread.currentThread().getName()+"售出了"ticket--);
}
}
}
运行后的结果是:
Thread-0售出了20
Thread-0售出了19
Thread-0售出了18
Thread-0售出了17
Thread-0售出了16
Thread-0售出了15
Thread-0售出了14
Thread-0售出了13
Thread-0售出了12
Thread-0售出了11
Thread-0售出了10
Thread-0售出了9
Thread-0售出了8
Thread-0售出了7
Thread-0售出了6
Thread-0售出了5
Thread-0售出了4
Thread-0售出了3
Thread-0售出了2
Thread-0售出了1
为什么只有一个线程在工作,而且执行这个程序一次以后,就无法再继续执行了,机器像死机一样。
public class testjava1
{
public static void main(String[] args)
{
Threadtest t=new Threadtest();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
}class Threadtest implements Runnable
{
private int ticket=20;
public void run()
{
while(true)
{
if (ticket>0)
System.out.println(Thread.currentThread().getName()+"售出了"ticket--);
}
}
}
运行后的结果是:
Thread-0售出了20
Thread-0售出了19
Thread-0售出了18
Thread-0售出了17
Thread-0售出了16
Thread-0售出了15
Thread-0售出了14
Thread-0售出了13
Thread-0售出了12
Thread-0售出了11
Thread-0售出了10
Thread-0售出了9
Thread-0售出了8
Thread-0售出了7
Thread-0售出了6
Thread-0售出了5
Thread-0售出了4
Thread-0售出了3
Thread-0售出了2
Thread-0售出了1
为什么只有一个线程在工作,而且执行这个程序一次以后,就无法再继续执行了,机器像死机一样。
public class ThreadTest implements Runnable {
private int ticket = 20; public void run() {
while(ticket > 0) {
System.out.println(Thread.currentThread().getName() + "售出了" + ticket--);
Thread.yield();
}
} public static void main(String[] args) {
ThreadTest t = new ThreadTest();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}}
public static void main(String[] args) {
Threadtest t = new Threadtest();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
}class Threadtest implements Runnable {
private int ticket = 20; public void run() {
while (ticket>0) {
try {
Thread.yield();//sleep(1);
} catch (Exception e) {
e.printStackTrace();
}
if (ticket > 0)
System.out.println(Thread.currentThread().getName() + "售出了" + ticket--);
}
}
}
while(true)
{
if (ticket> 0)
System.out.println(Thread.currentThread().getName()+"售出了"ticket--);
} 改成如下
while(true)
{
if (ticket> 0)
System.out.println(Thread.currentThread().getName()+"售出了"ticket--); try
{
Thread.sleep(10);
}
catch(Exception e)
{
}
}