Java多线程
2016-05-28 09:28
495 查看
Java线程是Thread类的对象,可以使用两种方式来创建多线程的Java应用程序,如下所示:
(1)实现Runnable接口
(2)继承Thread类
两种方式,都要在线程类的内部实现run()方法,然后new一个Thread,最后.start()。
1、Runnable接口的实现
package runnable;
public class RunnableTest {
private int length;
public RunnableTest(int length) {
this.length = length;
}
public long sum() {
long ret = 0;
for(int i=0;i<length; i++)
ret = ret+i;
return ret;
}
}
2、Thread类
package thread;
public class ThreadTest extends Thread {
private int length;
public ThreadTest(int length) {
this.length = length;
}
public long sum() {
long ret = 0;
for(int i=0;i<length; i++)
ret = ret+i;
return ret;
}
public void run() {
long sum = sum();
System.out.println(Thread.currentThread() + " sum =" + sum);
}
}
(1)实现Runnable接口
(2)继承Thread类
两种方式,都要在线程类的内部实现run()方法,然后new一个Thread,最后.start()。
1、Runnable接口的实现
package runnable;
public class RunnableTest {
private int length;
public RunnableTest(int length) {
this.length = length;
}
public long sum() {
long ret = 0;
for(int i=0;i<length; i++)
ret = ret+i;
return ret;
}
}
package runnable; public class RunnableExtend extends RunnableTest implements Runnable { public RunnableExtend(int length) { super(length); } @Override public void run() { long sum = sum(); System.out.println(Thread.currentThread() + " sum =" + sum); } }
package runnable; public class Main { public static void main(String[] args) { System.out.println("Thread is " + Thread.currentThread()); RunnableExtend mRunnableTestThread1 = new RunnableExtend(80); Thread th1 = new Thread(mRunnableTestThread1, "th1"); th1.start(); RunnableExtend mRunnableTestThread2 = new RunnableExtend(140); Thread th2 = new Thread(mRunnableTestThread2, "th2"); th2.start(); } }
2、Thread类
package thread;
public class ThreadTest extends Thread {
private int length;
public ThreadTest(int length) {
this.length = length;
}
public long sum() {
long ret = 0;
for(int i=0;i<length; i++)
ret = ret+i;
return ret;
}
public void run() {
long sum = sum();
System.out.println(Thread.currentThread() + " sum =" + sum);
}
}
package thread; public class Main { public static void main(String[] args) { System.out.println("Thread is " + Thread.currentThread()); //直接继承,创建线程 ThreadTest mThreadTest1 = new ThreadTest(80); Thread th1 = new Thread(mThreadTest1, "th1"); th1.start(); //使用匿名类创建 new Thread("th2"){ int length = 190; public void run(){ int ret = 0; for(int i=0;i<length; i++) ret = ret+i; System.out.println(Thread.currentThread() + " sum =" + ret); } }.start(); } }
相关文章推荐
- 用java编程输出九九乘法表
- SpringMVC get请求中文乱码
- Java双重循环
- java入门教程-11.7Java图像缓冲技术
- java入门教程-11.6Java图像处理基础
- java入门教程-11.5Java Graphics2D类的绘图方法
- java入门教程-11.4Java Graphics类的绘图方法
- java入门教程-11.3Java绘图模式概述
- java入门教程-11.2Java绘图之设置字型和颜色
- Java static内部类疑惑
- java入门教程-11.1Java绘图基础
- java入门教程-10.14Java键盘事件
- java入门教程-10.13Java鼠标事件
- java入门教程-10.12Java滚动条
- Java千百问_02基本使用(006)_eclipse如何保存时格式化
- java入门教程-10.11Java对话框(JDialog类和JOptionPane类)
- 用java编程输出高度为n的等腰三角形
- java入门教程-10.10Java菜单(菜单条、菜单和菜单项)
- java入门教程-10.9Java列表和组合框
- java入门教程-10.8Java选择框和单选按钮