java入门基础学习----创建线程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Miracle_Gaaral/article/details/86771155

一.概念----线程和进程的区别

二.  创建线程的三种方式

1.继承Thread +run()

        启动: 创建子类对象+对象.start()

2.实现Runnable + run()

        启动: 使用静态代理

           a.创建真实角色;   b.创建代理角色Thread+引用;   c.代理角色.start()

3.

 * 推荐Runnable创建线程
 * 1.避免单继承的局限性
 * 2.便于共享资源

package com.kennosaur.thread;

/**
 * 模拟龟兔赛跑
 * 1.创建多线程,继承Thread类 + 重写run(线程体)
 * 2.使用线程: 创建子类对象+对象.start()  //线程启动
 * @author Administrator
 *
 */
public class Rabbit extends Thread {
	@Override
	public void run() {
		//线程体
		for (int i = 0; i < 100; i++) {
			System.out.println("兔子跑了"+i+"步");
		}
		
	}
	

}

class Tortoise extends Thread {
	@Override
	public void run() {
		//线程体
		for (int i = 0; i < 100; i++) {
			System.out.println("乌龟跑了"+i+"步");
		}
		
	}
	

}

 * 静态代理 设计模式
 * 1.真实角色
 * 2.代理角色: 持有真实角色的引用
 * 3.二者实现相同的接口

package com.kennosaur.thread;
/**
 * 方便共享资源
 * @author Administrator
 *
 */

public class Web12306 implements Runnable{
	private int num=50;
	@Override
	public void run() {
		while (true) {
			if (num<=0) {
				break; //跳出循环
			}
			System.out.println(Thread.currentThread().getName()+"抢到了"+num--);
		}
	}
	
	public static void main(String[] args) {
		//真实角色
		Web12306 web = new Web12306();
		//代理
		Thread t1 = new Thread(web, "路人甲");
		Thread t2 = new Thread(web, "路人乙");
		Thread t3 = new Thread(web, "攻城狮");
		//启动线程
		t1.start();
		t2.start();
		t3.start();
	}


}

猜你喜欢

转载自blog.csdn.net/Miracle_Gaaral/article/details/86771155