美文网首页
java线程

java线程

作者: hmg | 来源:发表于2020-04-12 18:01 被阅读0次

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是无规律的获取线程的。所以有的时候我们再获取一个线程的时候,可能会持续对一个线程进行多次的获取。

相关文章

网友评论

      本文标题:java线程

      本文链接:https://www.haomeiwen.com/subject/mrvvmhtx.html