java基础---多线程

时间:2023-02-16 08:02:56

1. 使用继承Thread

package mypack;

public class Demo1 extends Thread
{
private String name ;
public Demo1(final String name)
{
this.name = name;
}

public void show()
{
for(int x = 0 ; x < 10 ; x++)
{
System.out.println( name + " ........... " + x);
}
}

public void run() //重写父类Thread的run方法
{
show();
}
}


/*
使用Thread继承方法的坏处:
1. Demo1是继承Thread的,如果Demo1还想继承其他类(比如Person类),以便获取到其他类的一些资源,就不行了
因为Java是单继承的, 不允许public class Demo1 extends Thread,Person
2. 各自的线程资源是独立的, 不便于共享,比如买票系统中的票是各个对象共享的,使用Thread继承方法无法实现
资源共享
*/


import mypack.Demo1;class ThreadDemo1{	public static void main(String[] args)	{		Demo1 demoa = new Demo1("zhangsan");			Demo1 demob = new Demo1("lisi");//		demoa.show();//		demob.show();//		demoa.run();//		demob.run();		demoa.start();							//开启线程,调用线程的任务run方法		demob.start();		System.out.println(" Hello World !!!");	}}

2.  使用实现Runnable

package mypack;

public class Demo2 implements Runnable
{
private String name ;
public Demo2(final String name)
{
this.name = name;
}

public void show()
{
for(int x = 0 ; x < 10 ; x++)
{
System.out.println( name + " ........... " + x);
}
}

public void run() //实现Runnable接口的run方法
{
show();
}
}


/*
1. Runnable方法是实现接口, Demo2只是实现Runnable中的接口,并不是Runnable中的子类
2. Runnable仅仅将线程的任务进行了对象的封装,Thread也实现了Runnable接口,然后再扩充
自己的内容
3. 继承Thread类是覆盖父类Thread的run方法,实现Runnable接口是覆盖Runnable的run方法;

*/

import mypack.Demo2;class ThreadDemo2{	public static void main(String[] args)	{		Demo2 demoa = new Demo2("zhangsan");			Demo2 demob = new Demo2("lisi");				Thread t1 = new Thread(demoa);		Thread t2 = new Thread(demob);		t1.start();							//开启线程,调用线程的任务run方法		t2.start();		System.out.println(" Hello World !!!");	}}