java如何创建线程锁,java线程里面创建线程
如何解决写爬虫IP受阻的问题?立即使用。
用Java线程类来表示线程,所有的线程对象都必须是线程类或其子类的实例。Java可以用三种方式创建线程,如下所示:
1)继承线程类来创建线程
2)实现Runnable接口来创建线程。
3)使用Callable和Future创建线程
让我们来看看这三种创建线程的方法。
继承Thread类创建线程步骤如下:
1] D定义Thread类的子类,重写这个类的run()方法。这个方法的方法体就是线程需要完成的任务。run()方法也称为线程执行器。
2]创建一个线程子类的实例,即创建一个线程对象。
3]启动线程,即调用线程的start()方法。
示例:
class public my Thread extends Thread {//继承Thread类。
公共无效运行(){
//重写run方法
}
}
公共类Main {
公共静态void main(String[] args){
新的MyThread()。start();//创建并启动线程
}
}实现Runnable接口创建线程步骤如下:
1]定义Runnable接口的实现类,并重写run()方法。这个run()方法与Thread中的run()方法相同。
2]创建一个Runnable实现类的实例,用这个实例作为Thread的目标创建Thread对象,这才是真正的Thread对象。
3]第三部分仍然通过调用thread对象的start()方法来启动线程。
示例:
my thread 2实现的公共类Runnable {//实现Runnable接口
公共无效运行(){
//重写run方法
}
}
公共类Main {
公共静态void main(String[] args){
//创建并启动线程
myThread 2 myThread=new myThread 2();
Thread thread=新线程(myThread);
线程()。start();
//或者newthread (newmythread2())。start();
}
}使用Callable和Future创建线程步骤如下:
1]创建可调用接口的实现类,实现call()方法,然后创建实现类的实例(从java8开始,可以直接使用Lambda表达式创建可调用对象)。
2]使用FutureTask类包装Callable对象,封装Callable对象的call()方法的返回值。
3]使用FutureTask对象作为Thread对象的目标来创建和启动线程(因为FutureTask实现了Runnable接口)
4]调用FutureTask对象的get()方法,获取子线程执行后的返回值。
示例:
公共类Main {
公共静态void main(String[] args){
mythread 3 th=new mythread 3();
//使用Lambda表达式创建可调用对象
//使用FutureTask类包装可调用对象
FutureTaskInteger future=新FutureTaskInteger(
(CallableInteger)()-{
返回5;
}
);
新线程(任务,“具有返回值的线程”)。start();//本质上,用一个可调用的对象创建并启动线程。
尝试{
System.out.println(子线程返回值: future . get());//在子线程完成执行之前,//get()方法将一直阻塞。
}catch(异常e){
ex . printstacktrace();
}
}
}更多java知识请关注java基础教程部分。这就是java如何创建线程的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。