(java technic)multithreaded部分笔记整理及Case(being revised)

Preface:

1    线程和进程的区别联系
进程:应用程序的执行实例
线程:CPU调度和分派的基本单位
区别
联系

2    并发 交替占用   并行


3    创建线程的方式
1)extends java.lang.Thread    (class)
2)implements java.lang.Runnable      (interface)

4    线程状态5  state

5    线程调度的函数

multithreaded

可以同时运行一个以上线程的程序称为multithreaded
多进程与多线程的一些区别:
每个进程拥有自己的一套变量,线程共享数据
共享变量使线程之间的通信比进程之间的通信更有效、更容易
在有的操作系统中,线程相较于进程更“轻量级”,创建、撤销一个线程比启动新进程的开销要小得多
线程:
P638
java.lang.Thread 1.0
static void sleep(long millis)休眠给定的毫秒数
参数:millis        休眠的毫秒数
使用线程给其他任务提供机会
AWT的event dispatch thread
在一个单独的线程中执行一个任务的简单过程
1)将任务代码移到实现了Runnable接口的类的run方法中
public interface Runnable{
    void run();
}
可以如下所示实现一个类:
class MyRunnable implements Runnable{
    public void run(){
        task code
    }
}
2)创建一个类对象
Runnable r=new MyRunnable();
3)由Runnable创建一个Thread对象:
Thread t=new Thread(r);
4)启动线程
t.start();
想将球代码放在一个独立的线程中,只要实现一个类BallRunnable,然后将动画放在run中

class BallRunnable implements Runnable{
    ...
    public void run(){
    try{
    for(int i=1;i<=STEPS;i++){
        ball.move(component.getBounds());
        component.repaint();
        Thread.sleep(DELAY);
    }
    }
    catch(InterruptedException)
    {
    }
    }
    ...
}

此外,需要捕获sleep方法可能抛出的异常InterruptedException
一般情况下,线程在中断时被终止。因此当发生InterruptedException时,run方法将结束执行
无论何时点击Start按钮,addBall方法都将启动一个新线程
Ball b=new Ball();
panel.add(b);
Runnable r=new BallRunnable(b,panel);
Thread t=new Thread(r);
t.start();
tips:也可以通过构建一个Thread类的子类定义一个线程
class MyThread extends Thread{
    public void run(){
        task code
    }
}

然后,构建一个子类的对象,并调用start方法。但是,应该从运行机制上减少需要并行的任务数量,因此这种方法已不再推荐。
warning:不要调用Thread类或Runnable对象的run方法。直接调用run方法,指挥执行同一个线程中的任务,儿不会启动新线程。应调用Thread.start方法。这个方法将创建一个执行run方法的新线程
bounceThread/BounceThread.java
P645

package bounceThread;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**Shows animated bouncing balls.
*/
public class BounceThread{
    public static void main(String[] args){
        EventQueue.invokeLater(new Runnable(){
            public void run(){
                JFrame frame=new BounceFrame();
                frame.setTile("BounceThread");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}
/**A runnable that animates a bouncing ball.
*/
class BallRunnable implements Runnable{
    private Ball ball;
    private Component component;
    public static final int STEPS=1000;
    public static final int DELAY=5;
    
/**Constructs the runnable.
*/
public BallRunnable(Ball aBall,Component aComponent){
    ball=aBall;
    component=aComponent;
    }
    public void run(){
    try{
        for(int i=1;i<=STEPS;i++){
        ball.move(component.getBounds());
        component.repaint();
        Thread.sleep(DELAY);
        }
    }
    catch(InterruptedException e){
    }
    }
}
/**The frame with panel and buttons.
*/
class BounceFrame extends JFrame{
    private BallComponent comp;
    
    /**Constructs the frame with the compon
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
乐高EV3教育版大象图纸可以帮助我们构建一个具有动态、可移动身体部分的大象模型。首先,我们需要准备一些特定的LEGO Technic元件,包括电机、关节、轮齿等。接下来,根据大象图纸上的指示,我们可以开始组装大象模型。 我们首先要组装大象的躯干部分。根据图纸上显示的方式,使用指定的LEGO Technic零件将大象的身体框架组装起来。然后,我们可以连接一个电机到身体的一侧,从而使大象具有运动能力。 接下来,我们可以开始组装大象的头部。使用图纸上提供的零件,按照指示将头部的框架构建起来,并确保它可以与躯干部分连接在一起。 一旦大象的躯干和头部部分都完成了,我们可以继续组装大象的四条腿。根据图纸上的指示,使用特定的零件构建相应的腿部结构,并确保它们可以连接到大象的躯干部分。 最后,我们可以继续组装大象的尾巴和耳朵。根据图纸上的指示,使用指定的LEGO Technic零件构建大象的尾巴和耳朵,并将它们连接到相应的部位。 完成组装后,我们可以测试大象模型的运动能力。通过连接电机到控制器并设置正确的程序,我们可以控制大象的移动和动作。 总之,乐高EV3教育版大象图纸提供了一种构建具有动态、可移动身体部分的大象模型的方式。通过按照图纸上的指示进行组装,我们可以拥有一个能够移动和执行各种动作的乐高大象模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值