zoukankan      html  css  js  c++  java
  • 第九章线程 java学习笔记

    因空间字数限制和发图片的不方便欢迎访问我的百度文库!

    http://wenku.baidu.com/view/9a02cb02de80d4d8d15a4f57.html

    第九章线程

    9.1 线程的基本概念

    1、线程是一个程序内部的顺序控制流(线程是一个程序中不同的执行路径)。

    2、线程和进程的区别

    a) 每个进程都有独立的代码和数据空间,进程间的切换会有较大的开销。

    b) 线程可以看成轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。

    c) 多进程:在操作系统中能同时运行多个任务(程序)。

    d) 多线程:在同一应用程序中能有多个顺序同时执行。

    3、Java的线程是通过jva.lang.Thread类来实现的。

    4、VM启动时会有一个由主方法(public static void main(){})所定义的线程。

    5、可以通过创建Thread的实例来创建线程。

    6、每个线程都是通过某个特定的Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。

    7、通过调用Thread类的start()方法来启动一个线程。

    8、线程类的写法

    class Runner1 implements Runnable {//建议实用Runnable接口

    //class Runner1 extends Thread {//不建议使用继承!

    public void run() {

    for(int i = 0; i<100; i++) {

    System.out.println("Runner1 :" + i);

    }

    }

    }

    9、线程的调用可以用run方法启动,但这样就是方法的调用,而不是多线程!

    真正的是调用Threadstart()方法!

    public class TestThread1 {

    public static void main (String []args) {

    Runner1 r = new Runner1();

    //r.run();//这样就是方法的调用的,并不是真正的多线程

    Thread t = new Thread(r);

    t.start();

    for(int i = 0; i<100; i++) {

    System.out.println("Main Thread :------" + i);

    }

    }

    }

    10、线程的创建和启动

    第一种:

    1)定义现场类实现Runnable接口

    2)Thread myThread = new Thread(target);//targetRunnable接口类型

    3)Runnable中只有一个方法:

    public void run(); 用以定义线程的运行体

    4)使用Runnable接口可以为多个线程提供数据的共享

    5)在实现Runnable接口的类的run方法定义中可以使用Thread的静态方法

    public static Thread currentThread() 读取当前线程的引用

    第二种:

    1)可以顶一个Thread的之类并重写其run方法如:

    Class MyThread extends Thread {

    public void run(){...}

    }

    2)然后生成该类的对象

    MyThread myThread = new MyThread(...)

     TestThread1.java

    public class TestThread1 {
    public static void main (String []args) {
    Runner1 r = new Runner1();
    //r.run();
    Thread t = new Thread(r);
    t.start();
    for(int i = 0; i<100; i++) {
    //Thread.sleep(1);
    System.out.println("Main Thread :------" + i);
    }
    }
    }

    //class Runner1 implements Runnable {
    class Runner1 extends Thread {
    public void run() {//重写的方法不能抛出比被重写方法不同的异常
    for(int i = 0; i<100; i++) {
    //Thread.sleep(1);
    System.out.println("Runner1 :" + i);
    }
    }
    }



    下面内容请到百度文库查看!

    作者:BuildNewApp
    出处:http://syxchina.cnblogs.comBuildNewApp.com
    本文版权归作者、博客园和百度空间共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则作者会诅咒你的。
    如果您阅读了我的文章并觉得有价值请点击此处,谢谢您的肯定1。
  • 相关阅读:
    Vue数据双向绑定原理
    JS递归
    JS数据结构-链表
    JS数据结构-树
    React性能优化手段
    Django请求的生命周期
    Devops-git初识
    Django数据迁移的问题
    无监控,不运维!运维监控工具平台建设总结
    数据库-数据类型及主键外键
  • 原文地址:https://www.cnblogs.com/syxchina/p/2197373.html
Copyright © 2011-2022 走看看