zoukankan      html  css  js  c++  java
  • JAVA线程

    进程是程序在处理机中的一次运行。一个进程既包括其所要执行的指令,也包括了执行指令所需的系统资源,不同进程所占用的系统资源相对独立。所以进程是重量级的任务,它们之间的通信和转换都需要操作系统付出较大的开销。
    线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程自己基本上不拥有系统资源,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。所以线程是轻量级的任务,它们之间的通信和转换只需要较小的系统开销。
    Java支持多线程编程,因此用Java编写的应用程序可以同时执行多个任务。Java的多线程机制使用起来非常方便,用户只需关注程序细节的实现,而不用担心后台的多任务系统。
    Java语言里,线程表现为线程类。Thread线程类封装了所有需要的线程操作控制。在设计程序时,必须很清晰地区分开线程对象和运行线程,可以将线程对象看作是运行线程的控制面板。在线程对象里有很多方法来控制一个线程是否运行,睡眠,挂起或停止。线程类是控制线程行为的唯一的手段。一旦一个Java程序启动后,就已经有一个线程在运行。可通过调用Thread.currentThread方法来查看当前运行的是哪一个线程。

    class ThreadTest{
    public static void main(String args[]){
    Thread t = Thread.currentThread();
    t.setName("单线程"); //对线程取名为"单线程"
    t.setPriority(8);
    //设置线程优先级为8,最高为10,最低为1,默认为5
    System.out.println("The running thread: " + t);
    // 显示线程信息
    try{
    for(int i=0;i<3;i++){
    System.out.println("Sleep time " + i);
    Thread.sleep(100); // 睡眠100毫秒
    }
    }catch(InterruptedException e){// 捕获异常
    System.out.println("thread has wrong");
    }
    }
    }

    多线程的实现方法
    继承Thread类
    可通过继承Thread类并重写其中的run()方法来定义线程体以实现线程的具体行为,然后创建该子类的对象以创建线程。
    在继承Thread类的子类ThreadSubclassName中重写run()方法来定义线程体的一般格式为:
    public class ThreadSubclassName extends Thread{
    public ThreadSubclassName(){
    ..... // 编写子类的构造方法,可缺省
    }
    public void run(){
    ..... // 编写自己的线程代码
    }
    }
    用定义的线程子类ThreadSubclassName创建线程对象的一般格式为:
    ThreadSubclassName ThreadObject =
    new ThreadSubclassName();
    然后,就可启动该线程对象表示的线程:
    ThreadObject.start(); //启动线程

    应用继承类Thread的方法实现多线程的程序。本程序创建了三个单独的线程,它们分别打印自己的“Hello World!”。
    class ThreadDemo extends Thread{
    private String whoami;
    private int delay;
    public ThreadDemo(String s,int d){
    whoami=s;
    delay=d;
    }
    public void run(){
    try{
    sleep(delay);
    }catch(InterruptedException e){ }
    System.out.println("Hello World!" + whoami
    + " " + delay);
    }
    }
    public class MultiThread{
    public static void main(String args[]){
    ThreadDemo t1,t2,t3;
    t1 = new ThreadDemo("Thread1",
    (int)(Math.random()*2000));
    t2 = new ThreadDemo("Thread2",
    (int)(Math.random()*2000));
    t3 = new ThreadDemo("Thread3",
    (int)(Math.random()*2000));
    t1.start();
    t2.start();
    t3.start();
    }
    }

    实现Runnable接口
    编写多线程程序的另一种的方法是实现Runnable接口。在一个类中实现Runnable接口(以后称实现Runnable接口的类为Runnable类),并在该类中定义run()方法,然后用带有Runnable参数的Thread类构造方法创建线程。
    创建线程对象可用下面的两个步骤来完成:
    (1)生成Runnable类ClassName的对象
    ClassName RunnableObject = new ClassName();
    (2)用带有Runnable参数的Thread类构造方法创建线程对象。新创建的线程的指针将指向Runnable类的实例。用该Runnable类的实例为线程提供 run()方法---线程体。
    Thread ThreadObject = new Thread(RunnableObject);
    然后,就可启动线程对象ThreadObject表示的线程:
    ThreadObject.start();
    在Thread类中带有Runnable接口的构造方法有:
    public Thread(Runnable target);
    public Thread(Runnable target, String name);
    public Thread(String name);
    public Thread(ThreadGroup group,Runnable target);
    public Thread(ThreadGroup group,Runnable target,
    String name);
    其中,参数Runnable target表示该线程执行时运行target的run()方法,String name以指定名字构造线程,ThreadGroup group表示创建线程组。
  • 相关阅读:
    d
    今天刚注册,测试下
    关于Hadoop的简单介绍
    leveldb 阅读笔记 (2) 简易测试框架
    leveldb 阅读笔记(1) 内存分配器 Arena
    数论
    伴随网站
    convenience website
    大佬独特的骗分技巧
    动态规划
  • 原文地址:https://www.cnblogs.com/zeroro/p/3722306.html
Copyright © 2011-2022 走看看