J2se(12)--------多线程

J2se(12)

多线程

------------------------------------------------

进程:  一个正在计算机中运行的程序,就称为一个进程


打开迅雷------>开启了一个进程

迅雷可以同时下载多个任务,每一个下载任务,就是一个线程


线程是进程之中,一个独立的执行单元



一个进程,可以包含多个线程

一个线程,一定隶属于某一个进程


任何程序要运行,至少要有一个线程,如果只有程序中只有一个线程,它就是“主线程”


程序中的主函数,其实就是主线程


除了主线程之外的其他线程,都统称为"子线程"


创建线程的方式有两种:

1、编写类继承于Thread 类

2、编写类实现Runnable接口







---------------------------------------------------------
第一种方式:  继承于Thread  

1、编写类继承于Thread类
2、重写类中的方法 run();该方法称为"线程体"------线程要做的事情,都应该在这里编写
3、创建自己编写的线程类,并且启动线程
4、调用线程对象.start();启动线程


----------------------------------------------------------------------------------

CPU负责调度,当前应该由哪一个任务来运行,每一个任务,其实就是一个线程

CPU在某一具体的时间,只能去执行一个线程




CPU会把计算机要执行的时候任务,划分成很多时间片段


CPU它在调度的时候,先让线程A运行几毫秒然后让线程A停下来,再让线程B运行几毫秒,然后再让线程B停下来,然后再让其他线程运行一会儿,再停下来,可能又会让A运行一会儿,由于它们之间间隔的时间非常短,对于用户来说,是感觉不到的。










当创建好线程实例以后,调用线程的start方法,该线程并不会马上就运行,当线程的start方法被调用以后,系统就会把该线程加入到CPU线程池中(等待CPU调度的线程,都会在线程池中排队),并且会给CPU发出一条信息,当前这个线程已经准备就绪,可以随时调用

cpu从线程池中调用线程时,是随机调用,它会让线程A先运行一会儿(几毫秒),然后让线程A停下来,然后再随机的从线程池选择一个线程来运行,运行一会儿,又会让当前线程停下来,再随机的选择一个线程来运行

当一个线程要执行的任务,执行完成以后,线程也就会自动销毁了

-----------------------------------------------------------------------------------


线程的常见方法:

setPriority(int); //用于设置线程的优先级  

10---优先级最高

1----优先级最低

5---正常频率



sleep(毫秒);  //让当前的线程在指定的时间内休眠,休眠的过程,CPU不会再调用当前线程,一直到休眠的时间到达以后,CPU才会重新调用


如果线程类,是通过继承Thread成为线程类,那么可以直接调用 sleep()进行休眠

如果不是继承于Thread类,那么要休眠,就需要调用  Thread.sleep();进行休眠



如果调用线程的stop方法终止线程,会产生一些不安全因素,以及造成一些资源













-----------------------------------------------

第二种方式成为线程:  实现Runnabel接口

1、编写类实现接口Runnabel

2、实现接口的方法run()----线程体
3、创建自己编写的线程类的实例

MyThread mt = new MyThread();//创建线程类实例


4、创建一个线程Thread,并且把mt做为参数,传递进去

Thread t = new Thread(mt);

5、启动线程
t.start();






因为java中,不允许多继承,如果自己编写的类继承于Thread成为线程,那么,就再也没有办法继承于其他类了



java中,类可以在继承类的同时,再实现其他接口


如果选择实现接口成为线程类,这个时候,你还可以继承于其他类,拥有其他类的特点








在什么时候,选择哪一种方式成为线程会比较方便?


1、继承于Thread类
2、实现Runnable接口



如果当前的类,只是单纯的做线程类来使用,这时候选择继承Thread类会更方便

如果当前类,不但要拥有线程类的特点,还想继承于其他类,就只能选择实现Runnable接口



































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值