求一个Java多线程程序代码的注释
publicclassThreadSleep{publicstaticvoidmain(String[]args){SubThreadst=newSubThread("S...
public class ThreadSleep
{
public static void main(String[] args)
{
SubThread st=new SubThread("SubThread");
st.start();}}
class SubThread extends Thread{
SubThread(){}
SubThread(String Name)
{super(Name);}
public void run(){
for(int count=1,row=1;row<10;row++,count++){
for(int i=0;i<count;i++)
{System.out.print("*");}
try{
Thread.sleep(100);
System.out.print("\t wait ......");
}
catch(InterruptedException e)
{e.printStackTrace();
}
System.out.println();
}}} 展开
{
public static void main(String[] args)
{
SubThread st=new SubThread("SubThread");
st.start();}}
class SubThread extends Thread{
SubThread(){}
SubThread(String Name)
{super(Name);}
public void run(){
for(int count=1,row=1;row<10;row++,count++){
for(int i=0;i<count;i++)
{System.out.print("*");}
try{
Thread.sleep(100);
System.out.print("\t wait ......");
}
catch(InterruptedException e)
{e.printStackTrace();
}
System.out.println();
}}} 展开
展开全部
多线程实现方式有两种:继承Thread类和实现Runnable接口,二者区别及示例如下:
1.实现方式不同及可扩展性
Thread 采用单继承的方式,继承Thread的类不可再继承其它类。
Runnable接口采用实现接口的方式,可再继承其它类。
2.方法执行体中 run( ),调用getName方法不同。
Thread可直接通过成员方法getName()获取当前运行时的线程名称。
Runnable中 必须通过 Thread.currentThread().getName()方法得到。
3.启动线程为就绪状态的方法不同。
Thread类 通过 new ThreadTest().start()的方法可以同时启动多个线程 其线程名默认为 Thread-0/1/2。
Runnable 需要通过 RunableTest rt= new RunableTest();
new Thread(rt,"线程0" ).start();
new Thread(rt,"线程1" ).start();
4.是否共享内存资源。
Thread 多个线程之间不共享内存资源 各自独立
Runnable 多个线程共享同一个内存资源。
方式一:
public class ThreadTest extends Thread {
private int i ;
public void run(){
for(;i <100;i++){
System. out.println("run:" +getName()+" "+ i);
}
}
public static void main(String[] args) {
for(int i=0;i<100;i++){
System.out.println("main:" +Thread.currentThread ().getName()+" " +i);
if(i==20){
new ThreadTest().start();
new ThreadTest().start();
}
}
}
}
方式二
public class RunableTest implements Runnable{
private int i ;
@Override
public void run(){
for(;i <100;i++){
String name=Thread. currentThread().getName();
System. out.println("run:" +name+" "+ i);
}
}
public static void main(String[] args) throws InterruptedException {
for(int i=0;i<100;i++){
System. out.println(Thread.currentThread().getName()+ " "+i);
if(i==20){
RunableTest rt= new RunableTest();
new Thread(rt,"线程0" ).start();
new Thread(rt,"线程1" ).start();
}
}
}
}
1.实现方式不同及可扩展性
Thread 采用单继承的方式,继承Thread的类不可再继承其它类。
Runnable接口采用实现接口的方式,可再继承其它类。
2.方法执行体中 run( ),调用getName方法不同。
Thread可直接通过成员方法getName()获取当前运行时的线程名称。
Runnable中 必须通过 Thread.currentThread().getName()方法得到。
3.启动线程为就绪状态的方法不同。
Thread类 通过 new ThreadTest().start()的方法可以同时启动多个线程 其线程名默认为 Thread-0/1/2。
Runnable 需要通过 RunableTest rt= new RunableTest();
new Thread(rt,"线程0" ).start();
new Thread(rt,"线程1" ).start();
4.是否共享内存资源。
Thread 多个线程之间不共享内存资源 各自独立
Runnable 多个线程共享同一个内存资源。
方式一:
public class ThreadTest extends Thread {
private int i ;
public void run(){
for(;i <100;i++){
System. out.println("run:" +getName()+" "+ i);
}
}
public static void main(String[] args) {
for(int i=0;i<100;i++){
System.out.println("main:" +Thread.currentThread ().getName()+" " +i);
if(i==20){
new ThreadTest().start();
new ThreadTest().start();
}
}
}
}
方式二
public class RunableTest implements Runnable{
private int i ;
@Override
public void run(){
for(;i <100;i++){
String name=Thread. currentThread().getName();
System. out.println("run:" +name+" "+ i);
}
}
public static void main(String[] args) throws InterruptedException {
for(int i=0;i<100;i++){
System. out.println(Thread.currentThread().getName()+ " "+i);
if(i==20){
RunableTest rt= new RunableTest();
new Thread(rt,"线程0" ).start();
new Thread(rt,"线程1" ).start();
}
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class ThreadSleep
{
public static void main(String[] args)
{
SubThread st=new SubThread("SubThread");
st.start();}}
//声明一个子进程的类
class SubThread extends Thread{
//默认构造函数
SubThread(){}
//带参数的构造函数
SubThread(String Name)
{super(Name);}
//重写run方法,调用start的时候实际执行的内容
public void run(){
//循环十次
for(int count=1,row=1;row<10;row++,count++){
//输出count个*
for(int i=0;i<count;i++)
{System.out.print("*");}
try{
//当前线程休眠,可能其他线程进来
Thread.sleep(100);
System.out.print("\t wait ......");
}
catch(InterruptedException e)
{e.printStackTrace();
}
System.out.println();
}}}
{
public static void main(String[] args)
{
SubThread st=new SubThread("SubThread");
st.start();}}
//声明一个子进程的类
class SubThread extends Thread{
//默认构造函数
SubThread(){}
//带参数的构造函数
SubThread(String Name)
{super(Name);}
//重写run方法,调用start的时候实际执行的内容
public void run(){
//循环十次
for(int count=1,row=1;row<10;row++,count++){
//输出count个*
for(int i=0;i<count;i++)
{System.out.print("*");}
try{
//当前线程休眠,可能其他线程进来
Thread.sleep(100);
System.out.print("\t wait ......");
}
catch(InterruptedException e)
{e.printStackTrace();
}
System.out.println();
}}}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |