java线程

java线程的概念

为何要多线程

线程是比线程更小的概念,一个进程里边会有多个线程。
一个cup要处理多个事情,只能把时间切分成多个,例如1毫秒处理音乐,下一毫秒处理qq等。这样每处理的一个内容叫做线程。

简单的java线程的实例

java的多线程有两种实现的方式,一种是Thread类的方式,继承这个类并且重新run方法。
线程只能启动一次。
实现的代码如下:

package com.thread;

class MyThread extends Thread{
    //实现run方法,当线程的实例调用start方法时执行就是这个run方法。
    public void run() {
        System.out.println(getName()+":线程开始运行了");
    }
}

public class ThreadTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MyThread mt=new MyThread();
        mt.start();//开启线程
    }
}

运行的结果如下:
Thread-0:线程开始运行了

Runnable创建线程

可以创建线程,但是不能够开启线程。这个创建线程的方法在实际当中用的还是比较多的。
如下代码:

//实现接口的方式来创建线程Runnable
class PrintRunnable implements Runnable{
    //实现这个方法是必须的
    public void run() {
        System.out.println(Thread.currentThread().getName()+":正在运行");
    }
}

实际使用这个Runnable的接口,如果要创建线程则需要借助于Thread才可以
如下代码:

PrintRunnable pr=new PrintRunnable();
        //但是Runnable创建线程必须要Thread才能够创建,自己本身是不能够直接创建的,如下
        Thread t=new Thread(pr);
        t.start();//开始这个线程

运行的实际结果是:
Thread-0:正在运行

关键字implements 继承接口的关键字要记得

线程的生命周期

1,new创建一个线程
2,通过start变成可运行状态
3,可运行状态,cpu分配时间后变成正在运行状态
4,阻塞状态(sleep停止,join,wait,I/0流)。如果变成不停止则是sleep超时,join完成,wait是要notify或者是notifyAll才可以。
5,不管哪个状态只要线程调用了stop方法就会线程就会停止

sleep方法的使用

Thread.sleep(ms);//表示的是这个线程多少毫秒后,cpu才会给它分配时间。

join方法的使用

这个是抢线程。就是要等到这个线程结束后才能够执行别的线程。
mt.join();//mt是Thread的子类的实例。
mt.join(ms);//表示这个线程抢过来后执行多少毫秒后再让出去。

java线程的优先级

java的线程的优先级别是从1~10 如果超过10就会报错。
mt.getPriority();//获取线程的优先级
mt.setPriority(int priority); //设置java线程的优先级。
java线程的优先级越高,就会越限制性这个线程。

线程的同步

java线程的同步是在执行这个线程时不会被其他的内容所打扰。这样保证这个线程正常执行完毕。
在静态方法,普通方法、和代码块都可以加上这个关键字synchorized

线程间的通信

使用的是wait方法和notify的方法或者是notifyAll的方法。
记住cup是无规律的获取线程的。所以有的时候我们再获取一个线程的时候,可能会持续对一个线程进行多次的获取。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 📦 本文以及示例源码已归档在 javacore 一、线程简介什么是进程什么是线程进程和线程的区别 二、线程基本用法...
    静默虚空阅读 1,826评论 0 1
  • 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让...
    尧淳阅读 5,474评论 0 25
  • 下面是Java线程相关的热门面试题,你可以用它来好好准备面试。 1) 什么是线程? 线程是操作系统能够进行运算调度...
    冰箱哥哥阅读 3,427评论 0 2
  • 1 前言 在JDK5之前,Java多线程以及其性能一直是个软肋,只有synchronized、Thread.sle...
    七寸知架构阅读 9,450评论 5 61
  • 感恩我们和睦的大家庭,人多力量大,什么事都能齐心协力的办好,愿我们大家庭的每一个人都平平安安,快快乐乐,健健康康。...
    孔美荣阅读 984评论 0 0