您现在的位置是:主页 > news > 咸宁手机网站建设/seo网站推广推荐

咸宁手机网站建设/seo网站推广推荐

admin2025/6/7 3:18:51news

简介咸宁手机网站建设,seo网站推广推荐,网页制作软件免费版dw,vs中可以用新建项目来做网站吗线程 一.什么叫线程 进程:进行中的程序;作为资源分配的单位。 线程:轻量级的进程;程序里的顺序控制流,可以理解为程序里不同的执行路径;作为调度和执行的但我i;多个线程可以共享内存&#xff0c…

咸宁手机网站建设,seo网站推广推荐,网页制作软件免费版dw,vs中可以用新建项目来做网站吗线程 一.什么叫线程 进程:进行中的程序;作为资源分配的单位。 线程:轻量级的进程;程序里的顺序控制流,可以理解为程序里不同的执行路径;作为调度和执行的但我i;多个线程可以共享内存&#xff0c…

线程

一.什么叫线程

进程:进行中的程序;作为资源分配的单位。

线程:轻量级的进程;程序里的顺序控制流,可以理解为程序里不同的执行路径;作为调度和执行的但我i;多个线程可以共享内存,共享地址。相互间的通信十分迅速

线程体为run()方法(直接调用run()视为普通方法),启动线程为start()方法; 

这里方法run()称为线程体, 它包含了要执行的这个线程的内容, Run方法运行结束, 此线程终止, 而CPU再运行其它线程, 而如果直接用Run方法, 这只是调用一个方法而已, 程序中依然只有主线程--这一个线程, 其程序执行路径还是只有一条, 这样就没有达到写线程的目的。

真正的多线程是指有多个CPU,而我们自己用的电脑,实际上是模拟多线程,来多个线程之间来回切换,然而由于切换的时间非常之短,所以我们所看到的就好像同时进行多个线程一样

二.如何创建线程

1.继承Thread类,重写run()方法

线程类:Rabbit(兔子)’与Tortoise(乌龟)类:

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

应用线程类方法:线程体是run()方法,启动线程是start()方法,直接调用run()是普通方法,并且启动线程并不等于运行了,具体还需要等待cpu调度

public class RabbitApp {public static void main(String[] args) {//创建子类对象Rabbit rabbit = new Rabbit();Tortoise tortoise = new Tortoise();//调用start()方法,启动线程
        rabbit.start();tortoise.start();for(int i =0; i < 10; i++){System.out.println("main>>>>>>");}}
}

结果:

2.实现Runnable接口,实现run方法

优点:避免单继承;方便共享资源

实现接口的线程类

public class Programer implements Runnable{@Overridepublic void run() {for(int i = 0; i < 100; i++){System.out.println("一边敲HelloWorld");}}
}

应用类:

public class ProgramerApp {public static void main(String[] args) {//创建真实角色Programer p = new Programer();//创建代理角色+持有真实角色引用Thread proxy = new Thread(p);//是用代理角色启动线程
        proxy.start();for (int i = 0; i < 100; i++) {System.out.println("一边聊QQ");}}
}

结果:

应用:

public class Web12306 implements Runnable{private int num = 50;@Overridepublic void run() {while (true) {if(num < 0){break;}System.out.println(Thread.currentThread().getName()+"抢到了"+num--);}}public static void main(String[] args) {//创建真实对象Web12306 web12306 = new Web12306();//创建代理对象Thread t1 = new Thread(web12306,"黄牛甲");Thread t2 = new Thread(web12306,"黄牛乙");Thread t3 = new Thread(web12306,"黄牛丙");//启动线程
        t1.start();t2.start();t3.start();}
}

结果:

3.线程的五种状态

详细状态:

 

 

  

创建:两种方式:1.继承Thread类,重写run()方法;2.实现Runnable接口,实现run()方法。——new出一个线程。

就绪:调用Thread的start()方法(第二种实现接口方式使用静态代理)

运行:得到时间片,开始运行

阻塞:遇到阻塞时间——解除阻塞回到就绪状态

终止:线程死亡,严禁使用stop()方法,而应该定义一个boolean flag,并在run方法中判断标志进行合理结束run()方法进而结束进程

更多线程面试知识:http://www.cnblogs.com/dolphin0520/p/3932934.html

 

 

转载于:https://www.cnblogs.com/python-road/p/10465789.html