admin 管理员组文章数量: 887016
多线程~~
文章目录
- 什么是线程、多线程
- 多线程的创建
- 方式一:继承Thread类
- 方式二:实现Runnable接口
- 匿名内部类方式实现Runnable接口
- 方式三: JDK5.0新增:实现Callable接口
- Thread的常用方法
- Thread构造器
- Thread获取和设置线程名称
- 获取正在运行的线程
- Thread类的线程休眠方法
什么是线程、多线程
多线程是指从软硬件上实现多条执行流程的技术
多线程的创建
方式一:继承Thread类
Java是通过java.lang.Thread类来代表线程的
按照面向对象的思想,Thread类提供了实现多线程的方式
调用start启动线程,只有调用start方法才是启用一个新的线程(直接调用run方法会当成普通方法执行,此时相当于还是单线程执行)
创建一个子线程类
public class Test {public static void main(String[] args) {Mythread mythread = new Mythread();mythread.start();for (int i =0;i<10;i++){System.out.println(i+"主线程被启动");}}}class Mythread extends Thread{@Overridepublic void run() {for (int i =0;i<10;i++){System.out.println(i+"子线程被启动");}}
}
主线程和子线程是同时运行的(不分先后)
方式二:实现Runnable接口
public class Test {public static void main(String[] args) {Mythread mythread = new Mythread();Thread thread = new Thread(mythread);thread.start();for (int i =0;i<10;i++){System.out.println(i+"主线程被启动");}}}class Mythread implements Runnable{@Overridepublic void run() {for (int i =0;i<10;i++){System.out.println(i+"子线程被启动");}}
}
匿名内部类方式实现Runnable接口
public class Test2 {public static void main(String[] args) {Thread thread = new Thread(new Runnable() {@Overridepublic void run() {for (int i=0;i<10;i++){System.out.println(i+"子线程运行");}}});thread.start();}
}
前两种线程创建方式都存在一个问题:他们重写的run方法均不能直接返回结果
方式三: JDK5.0新增:实现Callable接口
public class Test2 {public static void main(String[] args) throws Exception {Mythread1 mythread1 =new Mythread1();FutureTask<String> futureTask =new FutureTask<>(mythread1);Thread thread =new Thread(futureTask);thread.start();System.out.println(futureTask.get());}
}class Mythread1 implements Callable<String>{@Overridepublic String call() throws Exception {return "SSSS";}
}
Thread的常用方法
Thread构造器
Thread获取和设置线程名称
public class Test3 {public static void main(String[] args) {MyThread mythread = new MyThread();mythread.start();}
}class MyThread extends Thread{@Overridepublic void run() {for (int i = 0 ;i<10;i++){System.out.println(getName()+"线程正在运行");}}
}
也可以在MyThread中定义有参构造,直接定义线程名称
public class Test3 {public static void main(String[] args) {MyThread mythread = new MyThread("1");mythread.start();}
}class MyThread extends Thread{public MyThread() {}public MyThread(String name) {super(name);}@Overridepublic void run() {for (int i = 0 ;i<10;i++){System.out.println(getName()+"线程正在运行");}}
}
获取正在运行的线程
Thread m = Thread.currentThread( ); //获取当前正在运行的线程
Thread类的线程休眠方法
本文标签: 多线程
版权声明:本文标题:多线程~~ 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1686556837h9925.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论