java 第 ⑦ 天 创建线程以及线程相关方法

聊一下程序,进程和线程。
程序就是我们平时代码生成的指令和变量数据。是属于静态的(死的)
进程是执行程序的一次执行过程,程序动起来了,就是进程。是系统资源分配的单位。
线程是CPU调度和执行的单位。进程中包含若个线程(>=1)
否则没有存在的意义 。
真多线程: 是指有多个CPU同时在运行。
假多线程:是指一个CPU不断的切换执行任务,切换的速度超过了任务的完成速度,让用户有了同时在执行的错觉。

线程

如何创建线程(第一种方法,不建议使用,因为单继承)

  • 第一 新建一个类,用继承java.lang.Thread 类,Override重写 Run 方法
  • 第二 在Run 方法中实现 线程执行代码即可
  • 第三 创建线程对象,调用start方法来启动线程。

需要注意

  • 多线程 是抢占式 响应,按照优先级来

  • 若没有默认的优先级,则每次都会出现不同的运行结果。

  • 多次启动一个线程是非法的

  • public class MyThread extends Thread{
    	@override
    	publice void run(){
    	//线程执行代码
    	}
    }
    //调用
    public static void main(String[] args){
    	MyThread myTh = new MyThread();
    	myTh.start();
    }
    

    内存详解
    每增加一个线程,就会多一个线程的栈空间,Main栈空间是主要的,
    只要是调用了线程的Start方法,就会增加一个栈空间,并在里面执行run方法

创建线程的第二种方法(推荐使用,通过接口)

通过 实现Runnable接口的实现类来重写run方法
把实现了的接口类传进 Thread(Runnable )带参数构造方法
然后在调用Thread.start()方法

// 创建 一个Runnable的实现类对象
RunnableDemo run1 = new RunnableDemo();
// 然后 run1 传入 Thread
Thread t = new Thread(run1);
// 启动多线程
t.start();

实现Runnable 的好处:
1、避免了单继承的局限性
一个类只能有一个亲爹(单继承)
实现了Runnable 接口,还能继承其他类,和实现其他接口
2、达到了解耦效果
实现Runnable接口,把创建新线程和Run方法都进行了分离
实现类中 重写了run方法
通过Thread 的 start方法开启新线程

线程相关的方法

Thread 的 sleep方法
Thread.sleep( //毫秒 )
这个 静态 方法用来 暂时停止 线程的运行
调用时可能会抛出异常

获取线程名字
getNume()

获取当前线程
currentThread()

修改线程名字

  • 2种方法
    1、在创造一个带参的构造方法,里面调用父类的带参方法,让父类给新线程起个名字
    public class MyThread(String name){
    super.(name);
    }

    2、通过setName(“新名字”)方法
    Thread th = new Thread();
    th.setName(“毛崽”);

利用匿名内部类 创建多线程
匿名 没有名字
内部类:在其他类中实现
匿名内部类,还有另一种方法,就是使用lambda表达式

MyThread mm= new MyThread();
mm.start()
//内部类实现
new MyThread(){
	//override
	run(){
	}
}.start();


//内部类实现
Runnablemy r = new Runnablemy(){
	@override
	run(){
	}
	
}
new Thread(r).start();

//更简约
new Thread(new Runnablemy(){
	@override
	run(){
	}
}).start();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值