创建java程序线程的三种方式
来源:互联网 发布:mac照片导入lightroom 编辑:程序博客网 时间:2024/06/07 02:59
三种启动线程的方式(注:一个进程可以有多个线程)
(1) 继承Thread类
Step1:创建一个继承于Thread类的子类;
Step2:重写Thread类的run()方法,方法内实现此子线程要实现的功能;
Step3:创建一个子类的对象;
Step4:调用线程的start()方法;启动此线程,然后调用相应的run()方法
注:一个线程只能调用一次start()方法
package Thread01;public class MyThread extends Thread { private int i; @Override public void run() { for (; i < 10; i++) { System.out.println(getName()+"\t"+i); } }}package Thread01;public class MyTest { public static void main(String[] args) { for (int i = 0; i <10; i++) { System.out.println(Thread.currentThread().getName()+"\t"+i+"======"); if(i==5){ MyThread mt2 =new MyThread(); MyThread mt =new MyThread(); mt2.start(); mt.start(); } } } public static long getMemory() { return Runtime.getRuntime().freeMemory(); }}
(2) 实现Runnable接口
Step1:创建一个实现Runnable接口的类;
Step2:实现接口的抽象方法;
Step3:创建一个实现Runnable接口的实现类对象;
Step4:将此对象作为形参传递给Thread类的构造器,创建Thread类的对象,此对象即为一个线程;
Step5:调用start()方法:启动线程并执行run()方法。
package Thread02;public class SecondThread implements Runnable{ private int i; public void run() { for (; i < 20; i++) { System.out.println(Thread.currentThread().getName()+" "+i); if(i==20) { System.out.println(Thread.currentThread().getName()+"执行完毕"); } } }}package Thread02;public class MyTest { public static void main(String[] args) { for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName()+" "+i); if(i==5) { SecondThread s1=new SecondThread(); Thread t1=new Thread(s1,"线程1"); Thread t2=new Thread(s1,"线程2"); t1.start(); t2.start(); } } }}
(3)实现callable接口package Thread03;import java.util.concurrent.Callable;public class Target implements Callable<Integer> { int i=0; public Integer call() throws Exception { for (; i < 20; i++) { System.out.println(Thread.currentThread().getName()+""+i); } return i; }}package Thread03;import java.util.concurrent.FutureTask;public class ThirdThread { public static void main(String[] args) { Target t1=new Target(); FutureTask<Integer> ft=new FutureTask<Integer>(t1); Thread t2=new Thread(ft,"新线程"); t2.start(); try { System.out.println(ft.get()); } catch (Exception e) { // TODO: handle exception } }}
阅读全文
0 0
- 创建java程序线程的三种方式
- java创建线程的三种方式
- java创建线程的三种方式
- Java创建线程的三种方式
- Java线程创建的三种方式
- Java创建线程的三种方式
- Java创建线程的三种方式
- Java线程的三种创建方式
- java创建线程的三种方式
- java创建线程的三种方式
- Java创建线程的三种方式
- Java创建线程的三种方式
- Java学习之多线程--创建线程的三种方式
- java创建线程的三种方式及其对比
- 【java】创建线程的三种方式浅析
- 三种Java创建线程的方式(Callable,FutureTask)
- java创建线程的三种方式及其对比
- java创建线程的三种方式及其对比
- 594. Longest Harmonious Subsequence
- 关于Android开发中的BroadCastReceive
- IP地址与CIDR
- php 截取缓存,防止lua输出到前台
- JS控制HTML元素的显示和隐藏的2种方法
- 创建java程序线程的三种方式
- 他写出了史上最牛高考满分作文_如今在天猫卖小龙虾
- XGBoost学习
- 通过Driver与DriverManager连接数据库
- JFreeChart入门教程
- Css3阴影
- 通过Flume拉取Kafka数据保存到ES
- Spring Security(11)——匿名认证
- BUG修复---帐号更换绑定修复bug心得