Java的多线程是一个同时执行多个线程的过程。
线程是一个轻量级的子进程,是最小的处理单元。多线程和多进程都用于实现多任务处理。
但是,我们使用多线程而不是多进程,因为线程使用共享内存区域,它们不分配单独的内存区域以节省内存,而且线程之间上下文切换比进程花费的时间更少。
用一个东西之前,总得了解一下它的优点,这样才有动力看下去,这里我们先看一下多线程的优点。
Java多线程的优点
它不会阻塞用户,因为线程是独立的,你可以同时执行多个操作,举个栗子,你需要一个延时,等待三秒钟再进行接下来的操作,如果你使用单线程,它就真的等了你三秒,这三秒,啥都不干,啥都得放一边,就等。。。这明显是不可接受的。
你可以同时执行多个操作,节省时间。这里面又牵扯到CPU密集型和IO密集型的问题,可以看这篇文章:关于多线程的CPU密集型和IO密集型这件事
线程是独立的,死掉一个,不影响另一个。
继承Thread来实现多线程
Java提供了一个超类Thread给我们来extends,一旦继承了它,就可以通过override 其中的run方法,来实现多线程,具体代码如下:
package com.dingtao.test;
import java.io.*;
public class MyThread extends Thread{
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] args) throws IOException {
Thread t1 = new MyThread();
Thread t2 = new MyThread();
t1.start();
t2.start();
}
}
通过实现Runnable接口来实现
因为对于一些类来说,他们不能继承Thread来实现多线程,因为Java规定同时只能继承一个超类,但是却可以同时实现多个接口,因此Runnable就更格外受欢迎。具体代码如下:
package com.dingtao.test;
import java.io.*;
public class MyThread implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] args) throws IOException {
Thread t1 = new Thread(new MyThread());
Thread t2 = new Thread(new MyThread());
t1.start();
t2.start();
}
}
通过Callable来实现一个Thread
具体代码如下:
package com.dingtao.test;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
public class MyThread implements Callable<Integer>{
public static void main(String[] args){
MyThread t1 = new MyThread();
FutureTask<Integer> future = new FutureTask<Integer>(t1);
new Thread(future,"呵呵哒").start();
}
@Override
public Integer call() throws Exception {
System.out.println(Thread.currentThread().getName());
return null;
}
}
以上就是java如何实现多线程的详细内容,更多请关注亿速云其它相关文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。