码迷,mamicode.com
首页 > 编程语言 > 详细

多线程的实现和常用操作方法

时间:2020-06-17 11:09:18      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:意思   void   实例   包装   就是   tar   row   task   stop   

一、多线程的实现

1.继承 Thread 类

java.lang.Thread是一个线程操作的核心类。新建一个线程最简单的方法就是直接继承Thread类,而后覆写该类中的run()方法(就相当于主类中的main方法)

public class MyThread extends Thread{
    @Override
    public void run() {
        System.out.println("MyThread is run");
    }
}
MyThread myThread = new MyThread();//创建myThread实例
myThread.start();//启动线程

2.实现Runnable接口

public class MyThread implements Runnable{//实现Runnable接口
    @Override
    public void run() {
        System.out.println("MyThread is run");
    }
}
MyThread myThread = new MyThread();
Thread thread = new Thread(myThread);//将自己的myThread传入Thread
thread.start();//启动线程

3.实现Callable接口,重写call函数

public interface Callable<V>   {  //Callable接口
    V call() throws Exception;   
} 
public class SomeCallable<V> extends OtherClass implements Callable<V> {
    @Override   //@Override注解表明重写call()方法
    public V call() throws Exception {
        // TODO Auto-generated method stub
        return null;
    }
}
Callable<V> oneCallable = new SomeCallable<V>();   //由Callable<Integer>创建一个FutureTask<Integer>对象:   
FutureTask<V> oneTask = new FutureTask<V>(oneCallable);   //FutureTask<Integer>是一个包装器,它通过接受Callable<Integer>来创建,它同时实现了Future和Runnable接口。 
Thread oneThread = new Thread(oneTask);   //由FutureTask<Integer>创建一个Thread对象
oneThread.start();   //线程创建完成。

二、多线程常用操作方法

1.线程休眠 sleep()

线程休眠:指让线程暂缓一下,到了预计时间再执行。
线程休眠的时候会让出CPU,让CPU执行其他的任务,但是sleep方法不会释放锁,也就是说当前线程持有对某个对象的锁的时候,其他线程无法访问这个对象。

2.线程让步 yield()

调用这个方法会暂停当前线程对象,并执行其他线程。
yield方法会让当前线程交出CPU权限,让CPU执行其他的线程,同样也不会释放锁。但是yield不能控制让出CPU的时间。yield方法只能让拥有相同优先级的线程有获取CPU执行时间的机会。
调用yield方法并不会让线程进入阻塞状态,而是让线程重回就绪状态,它只需要等待重新获取CPU执行时 间,这一点是和sleep方法不一样的。

3.join()方法

等待该线程终止。意思就是如果在主线程中调用该方法时就会让主线程休眠,让调用该方法的线程run方法先执行完毕之后在开始执行主线程。

4.wait()方法

wait()方法是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法”,当前线程被唤醒(进入“就绪状态”)。

5.线程停止

多线程中有三种方式可以停止线程。
①. 设置标记位,可以是线程正常退出。
②. 使用stop方法强制使线程退出,但是该方法不安全。
④. 使用Thread类中的一个interrupt() 可以中断线程。

多线程的实现和常用操作方法

标签:意思   void   实例   包装   就是   tar   row   task   stop   

原文地址:https://blog.51cto.com/14298563/2505091

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!