java多线程

一、Java线程的概念

  1. 在大多数操作系统中都可以创建多个进程,多线程则指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务。
  2. 线程在一个完整的生命周期中通常要经历5中状态:新建状态、就绪状态、运行状态、阻塞状态和死亡状态。
  3. 创建新线程必须编写一个线程类,用JAVA编写多线程代码有两种方式:第一种方式是直接继承java的线程类Thread;第二种是实现Runnable接口。无论哪种方式均需要在程序中编写run()方法,线程在运行时要完成的任务在该方法实现。

二、Thread类简介

1、构造方法:
       public Thread ( ThreadGroup group, Runnable targeet, String name );
      其中,group指明该线程所属的线程组;target为实际执行线程体的目标对象,它必须实现接口Runnable;name为线程名。
      Java中的每个线程都有自己的名称,Java提供了不同Thread类构造器,允许给线程指定名称。如果name为null时,则Java自动提供唯一的名称。
      以下构造方法为缺少某些参数的情况:

  • public Thread (  );
  • public Thread ( Runnable targeet );
  • public Thread ( String name );
  • public Thread ( ThreadGroup group, Runnable targeet );
  • public Thread ( ThreadGroup group, String name );
  • public Thread (  Runnable targeet, String name );

2、其它常用方法:

方法功能
static void  sleep(long millis)休眠给定的毫秒数
static Thread currentThread()返回代表当前执行线程的Thread对象
void   start()启动这个线程,将引发调用run()方法。这个方法将立即返回,并且新线程将并发运行
void  run()由调度程序调用,当run()方法返回时,该线程停止。直接调用run方法,不会启动新线程
void  interrupt()向线程发送中断请求,线程的中断状态被设置为true,如果目前该线程被一个sleep调用阻塞,那么InterruptedException异常被抛出
static boolean interrupted()测试当前线程是否被中断,这一调用会产生副作用,它将当前线程的中断状态重置为false
boolean interrupted()测试线程是否被终止,不会改变线程的中断状态
void join()等待终止指定的线程
void join(long millis)等待指定的线程死亡或者经过指定的毫秒数
Thread.State getState()得到这一线程的状态;NEW(新创建)、RUNNABLE(可运行)、BLOCKED(被阻塞)、WAITING(等待)、TIMED_WAITING(计时等待)、TERMINATED(被终止)
void stop()停止该线程(已过时)
void suspend()暂停这一线程执行(已过时)
void resume()

恢复线程,仅在suspend()滞后调用(已过时)

void setPriority(int newPriority)设置线程的优先级。优先级必须在Thread.MIN_PRIORITY=1与Thread.MAX_PRIORITY=10之间。一般使用Thread.NORM_PRIORITY=5(默认的)优先级
static void yield()导致当前执行线程处于让步状态。
void setDaemon(boolean isDaemon)标识该线程为守护线程(daemon thread)true或用户线程false,这一方法必须在线程启动之前调用。守护线程的唯一用途是为其他线程提供服务。

三、继承Thread类实现多线程

class MyThread extends Thread{
  public void run(){...}
}
MyThread t=new MyThread();
t.start();

四、实现Runnable接口编写多线程

由于Java的单重继承限制,有些类必须继承其他某个类同时又要实现线程的特性。这时可通过实现Runnable接口的方式来满足两个方面的要求,Runnable接口只有一个方法run()。

class MyThread implements Runnable{
  public void run(){...}
}
MyThread r=new MyThread();
Thread t=new Thread(r);
t.start();



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值