10
2019
07

JAVA学习-Java高级-多线程之线程模型与使用

使用new创建线程后,可以通过Thread类的方法来设置线程的各种属性

线程进入阻塞状态:调用sleep方法,等待同步锁,调用了wait方法

终止线程的方法:执行完正常退出、使用stop方法强制退出、使用interrupt方法强制中断退出

Java实现方法,1:通过继承Thread类实现多线程,2:通过实现Runnable接口,再使用Thread实现多线程


package pkg1;
public class ThreadDemo {
public static void main(String[] args) {
System.out.println("———————————————demo 1—————————————————");
MyThread1 t1 = new MyThread1();
t1.setName("t1");// 设置线程名称
MyThread1 t2 = new MyThread1();
t2.setName("t2");// 设置线程名称
t1.start();// 线程启动
t2.start();// 线程启动
try {
t1.join();// 主线程等待新线程完成再继续往下执行
t2.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("demo 1 结束");
System.out.println("———————————————demo 2—————————————————");
MyRunnable1 r1=new MyRunnable1();
MyRunnable1 r2=new MyRunnable1();
Thread t3=new Thread(r1,"r1");
Thread t4=new Thread(r2,"r2");
t3.start();
t4.start();
try {
t3.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
t4.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//继承Thread类,直接启动线程
class MyThread1 extends Thread {
public MyThread1() {}//无参构造函数
public MyThread1(String name) {//有参构造函数,参数为:线程名称
super(name);
}
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(this.getName() + " " + i);
}
super.run();
}
}
//类实现Runnable接口,再用Thread线程启动执行
//一般多使用此方式实现多线程,方便实现资源共享(多线程使用同一对象,例如:多窗口卖同一车票)
class MyRunnable1 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " " + i);
}
}
}


«1»