黑马程序员技术交流社区
标题:
多线程 Thread CS Runnable 之效率问题 ?
[打印本页]
作者:
騛鹏
时间:
2013-3-17 15:43
标题:
多线程 Thread CS Runnable 之效率问题 ?
本帖最后由 騛鹏 于 2013-3-18 09:16 编辑
class Test extends Thread
{
Test(String name)
{
super(name);
}
public void run()
{
for (int x=0; x<60; x++)
{
System.out.println(this.getName()+" run..."+x);
}
}
}
class ThreadTest
{
public static void main(String[] args)
{
Test t1 = new Test("one----");
Test t2 = new Test("two++++");
t1.start();
t2.start();
for (int x=0; x<60; x++)
{
System.out.println("main...."+x);
}
}
}
复制代码
创建多线程方式一 继承Thread类 程序运行结束 java.exe 也结束
class Ticket implements Runnable
{
private int tick = 100;
public void run()
{
while (true)
{
if (tick>0)
{
System.out.println(Thread.currentThread().getName()+"....sale...."+tick--);
}
}
}
}
class TicketDemo
{
public static void main(String[] args)
{
Ticket t = new Ticket();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
Thread t3 = new Thread(t);
Thread t4 = new Thread(t);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
复制代码
方式二 实现Runnable 程序运行结束 java.exe 仍在运行 ,这样是否会降低CPU的使用效率?
2.jpg
(46.56 KB, 下载次数: 20)
下载附件
2013-3-17 16:11 上传
作者:
张世钦
时间:
2013-3-17 21:50
你的循环有问题
class Ticket implements Runnable
{
private int tick = 100;
public void run()
{
while (true)//这里不会停,一直转圈
{
if (tick>0)//只是打印了100次,当tick=0的时候就不读这句了,而是无线空转下去
{
System.out.println(Thread.currentThread().getName()+"....sale...."+tick--);
}
}
}
}
复制代码
作者:
騛鹏
时间:
2013-3-18 09:16
张世钦 发表于 2013-3-17 21:50
你的循环有问题
谢谢 是这个问题
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2