Java多线程基础-2-简单继承Thread,实现Runnable例子
2016-07-05 16:18
656 查看
前面我们提到实现多线程的三种方式。继承Tread,实现Runnable,和使用Executor框架创建线程池。
1、Tread创建和控制线程。
/**
* Created by wanchuang on 16/7/5.
*/
public class ThreadTest01 extends Thread{
char c;
public ThreadTest01(String name , char c){
super(name);
this.c=c;
}
public void run(){
int k;
char ch;
System.out.println();
System.out.println(getName()+":");
for (k=0;k<26;k++){
ch=(char)(c+k);
System.out.println(ch);
}
System.out.println(getName()+" end !");
}
public static void main(String args[]){
ThreadTest01 t1=new ThreadTest01("thread1",'A');
ThreadTest01 t2=new ThreadTest01("thread2",'a');
t1.start();
t2.start();
System.out.println("current count:"+Thread.activeCount());
}
}
此处有疑问?理论上应该当前线程数为3.但是多次测试为4.
2、Runnable接口实现方式创建控制线程。
/**
* Created by wanchuang on 16/7/5.
*/
public class RunnableTest01 implements Runnable{
char c;
public RunnableTest01(char c){
this.c=c;
}
@Override
public void run() {
char c1;
for (int i=0;i<26;i++){
c1=(char)(c+i);
System.out.println(c1);
}
}
public static void main(String args[]){
RunnableTest01 r1=new RunnableTest01('a');
RunnableTest01 r2=new RunnableTest01('A');
1、Tread创建和控制线程。
/**
* Created by wanchuang on 16/7/5.
*/
public class ThreadTest01 extends Thread{
char c;
public ThreadTest01(String name , char c){
super(name);
this.c=c;
}
public void run(){
int k;
char ch;
System.out.println();
System.out.println(getName()+":");
for (k=0;k<26;k++){
ch=(char)(c+k);
System.out.println(ch);
}
System.out.println(getName()+" end !");
}
public static void main(String args[]){
ThreadTest01 t1=new ThreadTest01("thread1",'A');
ThreadTest01 t2=new ThreadTest01("thread2",'a');
t1.start();
t2.start();
System.out.println("current count:"+Thread.activeCount());
}
}
此处有疑问?理论上应该当前线程数为3.但是多次测试为4.
2、Runnable接口实现方式创建控制线程。
/**
* Created by wanchuang on 16/7/5.
*/
public class RunnableTest01 implements Runnable{
char c;
public RunnableTest01(char c){
this.c=c;
}
@Override
public void run() {
char c1;
for (int i=0;i<26;i++){
c1=(char)(c+i);
System.out.println(c1);
}
}
public static void main(String args[]){
RunnableTest01 r1=new RunnableTest01('a');
RunnableTest01 r2=new RunnableTest01('A');
<span style="white-space:pre"> </span>//r1,r2不是线程对象,而是线程对象的目标对象 Thread t1=new Thread(r1); Thread t2=new Thread(r2);
<span style="white-space:pre"> </span>//以r1,r2为目标对象创建线程对象 t1.start(); t2.start(); System.out.println("current thread:"+Thread.activeCount()); } }Runnable中声明了一个run方法。同样Thread.activeCount()方法输出了4.不是很理解此处。应该是3吧?t1,t2,main.
相关文章推荐
- Java内部类小结
- 华为机试---查找兄弟单词
- java 数组元素位移的简单方法(ArrayList add方法源码)
- ideal中类无法导入
- Java---XML的解析(2)-DOM4J解析/Xpath
- Java---XML的解析(2)-DOM4J解析/Xpath
- Eclipse官网下载分类解释
- 使用JMockit编写java单元测试
- Java 四舍五入
- Spring Boot入门
- Java技术长久占居主要地位的12个原因
- RxJava 学习笔记(五) --- Creating 创建操作符
- Thinking in Java方法签名
- eclipse无法启动 \w*****\.metadata\.log
- SpringMVC容器初始化篇----ContextLoaderListener
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
- redhat6.5 jdk 安装
- RxJava 创建事件流
- Java反射机制简析
- Java实现单向链表的归并排序