class FirstThread extends Thread
{
public void run(){
for(int i=0;i<20;i++)
System.out.println("FirstThread---->"+i);
}
}
class Test
{
public static void main(String args[]){
//生成线程类对象
FirstThread ft=new FirstThread();
//启动线程,线程开始运行
ft.start();
for(int i=0;i<20;i++)
System.out.println("main--->"+i);
}
}
从结果看出,两个线程是交替着执行的;
2.两种实现多线程的方法:继承Thread类,实现Runnable接口。
1)实现Thread类:
public class NumberThread extends Thread
{
private int k; //序列初始值
public NumberThread(String name,int k){
super(name);
this.k=k;
}
public NumberThtead(String name){
this(name,0);
}
public void run(){//覆盖run()方法的线程体
int i=k;
System.out.print("\n"+this.getName()+": ");
while(i<50){
System.out.print(i+" ");
i+=2;
}
System.out.println(this.getName()+"结束");
}
public static void main(String args[]){
NumberThread thread_odd=new NumberThread("奇数线程",1);
NumberThread thread_even=new NumberThread("偶数线程",2);
thread_odd.start();
thread_ever.start();
System.out.println("activeCount="+thread_even.activeCount()); //返回当前活动线程个数
}
}
2)实现Runnable接口:
例1,
class RunnableImpl implements Runnable
{
public void run(){
for(int i=0;i<20;i++){
System.out.println("Runnable--->"+i);
}
}
}
class Test
{
public static void main(String args[])
{
//生成一个Runnable接口实现类的对象
RunnableImpl ri=new RunnableImpl();
//生成一个Thread对象,并将Runnable接口实现类的对象作为参数
//传递给该Thread对象
Thread t=new Thread(ri);
//通知Thread对象,执行Start方法
t.start();
}
}
例2,
public class NumberRunnable implements Runnable
{
private int k;
public NumberRunnable(int k){
this.k=k;
}
public NumberRunnable(){
this(0);
}
public void run(){
int i=k;
System.out.println();
while(i<50){
System.out.print(i+" ");
i+=2;
}
System.out.println("结束!");
}
public static void main(String args[]){
NumberRunnable odd=new NumberRunnable(1);
Thread thread_odd=new Thread(odd,"基数线程");
thread_odd.start();
new Thread(new NumberRunnable(2),"偶数线程").start();
}
}
- 大小: 1.8 KB
- 大小: 1.4 KB
分享到:
相关推荐
java语言,基于socket的多线程一对一聊天,暂不支持并发
C++多线程一步步编程C++多线程一步步编程---多线程
多线程一个类对象一个日志
C++_p2p实现多线程文件传输.docC++_p2p实现多线程文件传输.docC++_p2p实现多线程文件传输.docC++_p2p实现多线程文件传输.docC++_p2p实现多线程文件传输.docC++_p2p实现多线程文件传输.docC++_p2p实现多线程文件传输....
java程序(利用线程)。一个线程往成绩单中写入课程名和成绩,一个线程从成绩单中读出课程和成绩,并将课程和成绩显示在屏幕上。
多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU而只和I/O等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。从根本上 说,这就是多线程编程的最终目的。 单线程...
NetBeans工程,利用Java多线程实现客户机服务器,一客户一线程通信,通信协议为简单的Echo协议。
线程就好比车间里的工人,它是程序运行的最小单位,一个进程可以包括多个线程。 进程与线程概念 共享全局变量和锁 车间的空间是工人们共享的,许多房间是每个工人都可以进出的。进程中的内存空间也是共享的,每个...
java多线程并发查询数据库,使用线程池控制分页,并发查询。
利用线程池开多个线程在linux下运行
VC 获得线程的退出码,这是一个多线程比如启动线程一之后,系统会自动给该线程分配一个识别码,本程序就是获得这个识别码,一共有两个示例,完成的功能是一样的。比如其中一个线程的控制是这样的: void CDemoDlg:...
1)线程一先执行,当它执行完上面代码“Entry,V> next = e.next;”以后,e指向A,next指向B,时间片用完,线程一挂起。此时, : 2)线程二后执行,并且完成了整个扩容操作,而且扩容后的新数组替换了原数组。此时...
使用场景为一个线程写一个线程读完全不需要锁。可以设定buffer的初始块及数量,初始块是固定大小的,当需要扩环时会动态创建块即不像其它的库块满了就写失败了,当释放时会将动态创建的块还给系统,初始块还给自己的...
(多线程计算 线程一:进行读取文件数据到线程队列,线程二:从线程队列中拉取数据进行MD5计算(抄袭了FFMPEG 播放器的 多线程解码的原理),从进度条可以看出几乎读文件线程与计算线程同步,读文件线程首先读出1个...
用Java实现消费者与生产者两个线程进行调度
启动两个线程,一个线程打印1~52,另一个线程打印A~Z
本篇概要 1.线程与多线程 2.进程与多进程 ...一个线程可以看成是一个有序的指令流(完成特定任务的指令),并且可以通过操作系统来调度这些指令流。 线程通常位于进程程里面,由一个程序计数器、一个堆栈
两个线程,一个线程接收数据一个线程发送数据
1. 编写程序,使用两个线程,一个队列, 其中一个线程从键盘读取数据,放入到队列中,直到读取的数据是字符串quit则结束,线程的任务就是循环读取数据直到特定的字符串quit。另外一个线程,不断的从队列中读取数据...
当一个线程结束时异步通知另一线程,被通知的线程不用等待!