鱼C论坛

 找回密码
 立即注册
查看: 3650|回复: 0

[学习笔记] Java笔记 线程 ( 一) -Thread

[复制链接]
发表于 2017-8-15 15:04:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 可爱的静静 于 2017-8-16 18:35 编辑

多线程
进程:是一个正在执行的程序
每一个进程都有一个顺序,该顺序是一个执行路径,或者叫一个控制单元
线程:就是进程中的一个独立控制单元
      线程在控制着进程的执行
一个进程至少有一个线程
例如:
迅雷可以同时下载 那迅雷就相当于一个进程 而同时下载的路径就是线程

例如:Java  VM(虚拟机)  启动的时候会有一个进程 java.exe(一个程序)
进程中至少有一个线程负责java程序进程执行
而且这个进程进行的代码在于main方法中
该线程称之为主线程(也就是main方法叫做主线程 控制程序的执行)



多线程意义:
程序可以同时执行,如果是同时执行下载 可以提高效率

线程的创建方式(自定义的代码中自定义一个线程)
Thread类  
线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。

创建方式两个方法:
1一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。

public void run()
如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。


2创建线程的另一种方法是声明
实现 Runnable 接口的类


自定义步骤:
1自定义类继承Thread
2覆盖run
3调用start方法-
   方法作用:启动线程 调用run方法
例子:
import java.lang.Thread;

public class sport {
        

        public static void main(String[] args) {
                // TODO Auto-generated method stub

                walk a=new walk();
                a.start();
                for(int i=0;i<10;i++)
                        System.out.println("run"+i);
                
        }
}

class walk extends Thread{
        public void run(){
                for(int i=0;i<10;i++)
                        System.out.println("walk"+i);
        }
}

执行顺序:首先执行主线程 main  当执行到线程创建对象后 还没有实际的调用创建的线程 当运行到start方法的时候 单线程 变成 多线程
如图  

输出结果:run0
walk0
walk1
run1
walk2
run2
walk3
walk4
run3
walk5
walk6
walk7
walk8
run4
walk9
run5
run6
run7
run8
run9

看到结果 有时候输出run有时候输出walk而且没有规则 每一次运行都输出不同的结果 那是因为实际上不是多线程同时执行的 只是cpu快速的一时使用主线程 一时使用新建的线程 就是哪个线程抢到cpu就执行哪个 只是cpu快速执行 看上去好像同时执行
明确一点 在某一刻 只能由一个程序在执行 (多核除外)

多线程的一个特性 随机性

无标题.png

评分

参与人数 2荣誉 +5 鱼币 +9 收起 理由
小甲鱼 + 4
alltolove + 5 + 5 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 12:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表