Java ---多线程1

来源:互联网 发布:mysql存储过程 编辑:程序博客网 时间:2024/06/16 11:06

Java 多种线程的创建方法

1:new Thread().start();

new Thread() {    public void run() {        //需要执行耗时的事件    }.start();

new Thread() 方法被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪,不利于扩展。

优点:书写简单
缺点:只能执行一次,复用性不高。

2:extends Thread

class MyThread extends Thread {    //调用父类带参数的构造方法    MyThread (Object obj){        super(obj);    }    @Override    public void run() {    }}.....Thread myThread1 = new MyThread();     // 创建一个新的线程 myThread1.start();                    

优点:比起1,2的方法可以多次创建,调用,创建灵活
缺点:扩展性不强,线程继承了Thread类,不能再继承其他父类

**3**implements Runnable

class myRunable implements Runnable {    private int shareResource;//共享资源    @Override    public void run() {    }}......myRunable  loadRunnable = new myRunable ();Thread myThread1 = new Thread(loadRunnable);Thread myThread2 = new Thread(loadRunnable);myThread1 .start();myThread2 .start();

优点:创建一个资源,可以供多个线程来执行
缺点:书写复杂

Thread主要函数

run() //线程运行时所执行的代码

start() //启动线程

sleep(long millis) //线程休眠,交出CPU,让CPU去执行其他的任务,然后线程进入阻塞状态,sleep方法不会释放锁

yield() //使当前线程交出CPU,让CPU去执行其他的任务,但不会是线程进入阻塞状态,而是重置为就绪状态,yield方法不会释放锁

join(long millis) //等待线程终止,直白的说 就是发起该子线程的线程 只有等待该子线程运行结束才能继续往下运行

wait() //交出cpu,让CPU去执行其他的任务,让线程进入阻塞状态,同时也会释放锁

interrupt() //中断线程,自stop函数过时之后,我们通过interrupt方法和isInterrupted()方法来停止正在运行的线程,注意只能中断已经处于阻塞的线程

getId() //获取当前线程的ID

getName() //获取线程的名
setName() //设置线程的名

getPriority() //获取线程的优先级 一般用1-10的整数表示,默认优先级是5,优先级最高是10,优先级高的线程被执行的机率高

setPriority() //设置线程优先级

setDaemon()//设置为守护线程

isDaemo() //判断是否是守护线程

currentThread()//静态函数获取当前线程

0 0
原创粉丝点击