标签:参数传递 ble 方便 目的 oop 自定义 建立 接口 定义类
步骤:
①、定义类继承Thread;
②、复写Thread类中的run方法;
目的:将自定义代码存储在run方法,让线程运行
③、调用线程的start方法:
该方法有两步:启动线程,调用run方法。
不建议使用:避免OOP单继承局限性
实例:
public class TestThread1 extends Thread {
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("我在打游戏"+i);
}
}
public static void main(String[] args) {
TestThread1 testThread1 = new TestThread1();
testThread1.start();
for (int i = 0; i < 20; i++) {
System.out.println("我在学习"+i);
}
}
}
实现步骤:
①、定义类实现Runnable接口
②、覆盖Runnable接口中的run方法将线程要运行的代码放在该run方法中。
③、通过Thread类建立线程对象。
④、将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。
自定义的run方法所属的对象是Runnable接口的子类对象。所以要让线程执行指定对象的run方法就要先明确run方法所属对象
⑤、调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。
推荐使用:避免单继承局限性,灵活多变,方便同一对象被多线程使用.
实例:
public class TestThread3 implements Runnable {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("我在打游戏"+i);
}
}
public static void main(String[] args) {
//创建Runnable实现类对象
TestThread3 testThread3 = new TestThread3();
new Thread(testThread3).start();
for (int i = 0; i < 100; i++) {
System.out.println("我在学习"+i);
}
}
}
//多个线程操作同一资源时,数据出现紊乱
public class TestThread4 implements Runnable {
//火车票数
private int ticketNums=15;
@Override
public void run() {
while(true){
if(ticketNums<=0){
break;
}
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"拿到了第"+ticketNums+"张票");
ticketNums--;
}
}
public static void main(String[] args) {
TestThread4 testThread4 = new TestThread4();
new Thread(testThread4,"我").start();
new Thread(testThread4,"你").start();
new Thread(testThread4,"黄牛").start();
}
}
public class Race implements Runnable {
private static String winner;
@Override
public void run() {
for (int i = 0; i <= 100; i++) {
if(Thread.currentThread().getName().equals("兔子")&&(i%10==0)){
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
boolean flag = isOver(i);
if(flag){
break;
}
System.out.println(Thread.currentThread().getName() + "跑了第" + i + "步");
}
}
public boolean isOver(int i) {
if (winner != null) {
return true;
} else if (i == 100) {
winner=Thread.currentThread().getName();
System.out.println(winner + "获得胜利");
return true;
} else
return false;
}
public static void main(String[] args) {
Race race = new Race();
new Thread(race,"乌龟").start();
new Thread(race,"兔子").start();
}
}
标签:参数传递 ble 方便 目的 oop 自定义 建立 接口 定义类
原文地址:https://www.cnblogs.com/promiss911/p/13199895.html