下面这段程序为什么没实现多线程,写法有什么错误
public class Demo
{
public static void main(String[] arg)
{
new TestThread().start();
for(int i=0;i<7;i++)
{
System.out.println("多线程正在运行!");
}
}
}
class TestThread extends Thread
{
public void run()
{
for(int i=0;i<7;i++)
{
System.out.println("是多线程!");
}
}
}
public class Demo
{
public static void main(String[] arg)
{
new TestThread().start();
for(int i=0;i<7;i++)
{
System.out.println("多线程正在运行!");
}
}
}
class TestThread extends Thread
{
public void run()
{
for(int i=0;i<7;i++)
{
System.out.println("是多线程!");
}
}
}
TestThread t2 = new
TestThread t3 = new
t1.start();t1.start();t3.start();
这样才算是3个线程撒
{
public static void main(String[] arg)
{
for(int i=0;i<7;i++)
{
new TestThread().start();
System.out.println("多线程正在运行!");
}
}
}
class TestThread extends Thread
{
public void run()
{
for(int i=0;i<7;i++)
{
System.out.println(Thread.currentThread().getName()+"是多线程!");
}
}
}
我想他应该是没看出效果,因为如果中间不用时间断点,只要运行一下就执行完了。就看不出效果了。所以每个for加一个时间断点是必要的。Thread.sleep(1000);//每隔一秒执行一下。
不防把循环次数加大大的(效果不明显),因为现在的处理机速度太快太快了。
其次,让一个线程进入block状态一秒,你会发现并发啊啊啊 啊a
你在每个for里面加一个Thread.sleep(1000);让程序有所等待,效果才明显。
start()只是让线程处于一种可执行状态 而不是立即开始执行run() 真正的执行还要等线程拿到CPU的处理权
通俗点说就是轮流执行,但因为每次分得的时间片不等,所以每个线程的每次执行时长也不等。这是我的理解