最简单的方法:
new Thread(new Runnable() {
public void run() {
//线程要运行的内容
}
}).start();
下面两种比较麻烦。
方法一: 用继承Thread实现
package threadtest13;
//多线程的写法2,用两种情况变换,
//情况1:新建一个对象,两个线程共享一个对象。另外是新建两个对象,两个线程用两个对象
//情况2:int i=0;拿到run()外面与在run()里面两种情况。
//上面4种情况可以排列组合试一下
public class Thread13 {
public static void main(String args[]){
MyThread myThread = new MyThread();
// MyThread myThread2= new MyThread();//2
Thread t1= new Thread(myThread);
Thread t2= new Thread(myThread);
//Thread t2= new Thread(myThread2); //2
t1.start();
t2.start();
}
}
class MyThread extends Thread {
// int i=0;//1
public void run() {
String name = Thread.currentThread().getName();
String inf=Thread.currentThread().toString();
long idnum = Thread.currentThread().getId();
for(int i=0;i<10;i++){//不管是新建一个对象,还是两个对象,//2,都是打印20个数据
// for(;i<10;i++){//新建一个对象的时候,打印11个左右的数据 ,新建两个对象的时候,//2,会
打印20个数据。//1
System.out.println("i----------"+i + ",thread name==" + name
+ ",threadid==" + idnum+",thread inf=="+inf);
}
}
}
上面方法两个线程不能同步。
方法二:用“实现”Runnable方法实现
package threadtest12;
//多线程的写法1
public class Thread12 {
public static void main(String args[]) {
MyThread myThread = new MyThread();
//myThread.run();
//把这个MyThread包装称为Thread
Thread t1 = new Thread(myThread);
Thread t2= new Thread(myThread);
t1.start();
t2.start();
}
}
class MyThread implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
String name = Thread.currentThread().getName();
String inf=Thread.currentThread().toString();
long idnum = Thread.currentThread().getId();
for(int i=0;i<10;i++){
System.out.println("aaaaa----------" + ",thread name==" + name
+ ",threadid==" + idnum+",thread inf=="+inf);
}
}
}
两个共享一个thread对象,并发调用,20条数据