线程Java

1.概念理解
1.每个Java程序都至少有一个线程,即主线程。当一个Java程序启动时,JVM会创建主程序,并在该线程中调用程序的main()方法。在单个程序中同时运行多个线程完成不同的工作,称为多线程。 线程是程序执行流的最小单元。
2. 一个应用程序就是一个线程,而线程是一个进程内部的多个运行单位。多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,在程序内部可以互相调用。

2.进程应用
1.并行性。平时编程都会顺序执行,所以当执行到某个地方发生阻塞,或需很久执行完,那么后边的程序将无法执行。所以需要多线程,使阻塞的地方独立执行,后边的代码也独立执行,实现并行执行。
模型:public void m(){
在线程中调用 a();
在线程中调用 b();
在线程中调用 c();
}
public void a(){}
public void b(){}
public void c(){}
2.高效性。当需要多次完成某项任务时,可以将原本一个线程执行的任务,分配给多线程,从而提高效率。

3.线程的编码
1.实现接口类Runnable
1.其中只有run()方法
当需要启动时,转换为Thread,调用Start()启动

2.继承类Thread
使用中的典型方法
1.重写Run()方法,内容就是线程要进行的任务;
2.Start()方法启动线程
3.sleep方法,使线程进行休眠,需要捕获异常。
当线程代码执行完则结束,有时我们使用while(true)使代码 一直执行,退出方法,break/return

4.实现
一个球在界面里弹
import java.awt.Graphics;
import javax.swing.JFrame;
public class BallFrame extends JFrame{
public static void main(String[] args) {
BallFrame bf=new BallFrame();
bf.initIU();
}
//界面
public void initIU(){
this.setTitle("小球");
this.setSize(400,400);
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
this.setVisible(true);
mt=new MyThread(10, 30, this);//创建线程
mt.start();//启动线程
}
private MyThread mt;
//重绘,画小球
public void paint(Graphics g){
super.paint(g);
g.fillOval(mt.getX(), mt.getY(), 40, 40);
}
}

//继承线程的类
public class MyThread extends Thread{
private int x,y;//小球坐标
private int movex=2,movey=3;//小球横纵坐标移动的距离
private BallFrame bf;
public MyThread(int x,int y,BallFrame bf){
this.x=x;
this.y=y;
this.bf=bf;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
//重写run方法
public void run(){
while(true){
x=x+movex;
y=y+movey;
try {
this.sleep(25);
} catch (InterruptedException e) {
e.printStackTrace();
}
bf.paint(bf.getGraphics());
System.out.println(x+" "+y);
if(y>350)//当小球到下边界,要向上弹
movey=-3;
if(x>350)//当小球到右边界,要向左弹
movex=-2;
if(y<30)//当小球到上边界,要向下弹
movey=3;
if(x<3)//当小球到左边界,要向右弹
movex=2;
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值