面向对象技术书面作业8 (GUI +多线程)

面向对象技术书面作业8 (GUI +多线程)

1.进行GUI程序设计的步骤有哪些?各有什么样的功能。

(1)引用需要的包和类。
(2)设置一个顶层的容器。
(3)根据需要为容器设置布局管理器或使用默认布局管理器。
(4)将组件添加到容器内,位置自行设计。
(5)为响应事件的组件编写事件处理代码

2.GUI中panel的默认布局管理器是什么?

FlowLayout

3.什么是线程?创建线程的两种方法分别是什么?

一个应用是一个进程,一个用户就是一个线程

public class Test1 {
public static void main(String[] args) {
Thread thread1 = new MyThread1();
Thread thread2 = new Thread(new MyThread2());
thread1.setName(“线程一”);
thread2.setName(“线程二”);
thread1.start();
thread2.start();
}
}

class MyThread1 extends Thread{
public void run(){
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + " ----> " + i);
}
}
}

class MyThread2 implements Runnable{

@Override
public void run() {
    for (int i = 0; i < 10; i++) {
        System.out.println(Thread.currentThread().getName() + " ----> " + i);
    }
}

}

4.叙述线程的生命周期的各个阶段及功能?

新建状态:就是刚new出来的线程对象
就绪状态(可运行状态):表示当前线程就有抢夺CPU时间片的权利,当一个线程抢到CPU时间片之后就会开始执行其对应的run方法,run方法的执行标志线程进入了运行状态
运行状态:run方法的执行标志了线程进入了运行状态,当占用的CPU时间片被用完之后会重新进入就绪状态去抢占CPU时 间片,当重新抢到CPU时间片之后会接着上一次的代码继续往下执行
死亡状态:当run方法执行完毕之后,线程就进入了死亡状态
阻塞状态:当线程遇到了阻塞状态,例如sleep方法,接受用户键盘输入等就会进入阻塞状态,此时会将占用的CPU时间片释放,当阻塞状态解除后,会进入就绪状态,重新争夺CPU时间片
锁池lockpool:在运行状态如果遇到对应synchronized锁,那么就会进入锁池,进入之后就会寻找对应的锁,如果找到了就会回到就绪状态,如果没找到就会在锁池中等待
在这里插入图片描述

5.什么是线程同步?线程同步的作用是什么?如何实现线程的同步?

线程同步:线程同步就是几个线程分先后执行,两个线程之间发生了等待关系,这就是同步编程模型
线程同步的作用:数据在多线程并发的情况下仍能安全
线程同步:synchronized关键字

6.运行下面的程序,写出一个可能的运行结果。

public class Exam_2 {
public static void main(String args[ ]) {
Bank bank=new Bank();
bank.setMoney(300);
Thread threadOne,threadTwo;
threadOne=new Thread(bank); //runnable对象作为参数
threadOne.setName(“One”);
threadTwo=new Thread(bank);
//threadTwo和threadOne的目标对象相同
threadTwo.setName(“Two”);
threadOne.start();
threadTwo.start();
}
}

public class Bank implements Runnable {
private int number=0;
public void setMoney(int m) {
number=m;
}
public void run() { //重写Runnable接口中的方法
while(true) {
String name=Thread.currentThread().getName();
if(name.equals(“One”)) {
if(number<=160) {
System.out.println(name+“进入死亡状态”);
return; // threadOne的run方法结束
}
number=number+10;
System.out.println(“我是”+name+“现在number=”+number);
}
if(Thread.currentThread().getName().equals(“Two”)) {
if(number<=0) {
System.out.println(name+“进入死亡状态”);
return; // threadTwo的run方法结束
}
number=number-100;
System.out.println(“我是”+name+“现在number=”+number);
}
try{ Thread.sleep(800);
}
catch(InterruptedException e){}
}
}
}
我是One现在number=310
我是Two现在number=210
我是One现在number=220
我是Two现在number=120
我是Two现在number=20
One进入死亡状态
我是Two现在number=-80
Two进入死亡状态

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值