多线程的实现和常用操作方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程的实现和常用操作方法相关的知识,希望对你有一定的参考价值。
一、多线程的实现
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() 可以中断线程。
以上是关于多线程的实现和常用操作方法的主要内容,如果未能解决你的问题,请参考以下文章