多线程作业

1、调试教材P335【例18.4】进度条线程的插入(join)。

package luhkel;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JProgressBar;

public class s1 extends JFrame{
     private Thread threadA;
     private Thread threadB;
    final JProgressBar progressBar = new JProgressBar(); 
    final JProgressBar progressBar2 = new JProgressBar(); 
    int c=0;
    
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
init(new JFrame(),100,100);
    }
    public s1(){
        super();
        getContentPane().add(progressBar, BorderLayout.NORTH);
        getContentPane().add(progressBar2, BorderLayout.SOUTH);
        progressBar.setStringPainted(true);
        progressBar2.setStringPainted(true);
        threadA =new Thread(new Runnable(){
            int c=0;
            public void run(){
                while(true){
                    progressBar.setValue(++c);
                    try{
                        Thread.sleep(100);
                        threadB.join();
                        
                    }
                    catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }
        });
        threadA.start();
        threadB= new Thread(new Runnable(){
            int c=0;
            public void run(){
                while(true){
                    progressBar2.setValue(++c);
                    try{
                        Thread.sleep(100);
                        
                    }
                    catch(Exception e){
                        e.printStackTrace();
                
            }
                    if(c==100)
                        break;
        }
        
    }

});
        threadB.start();
        }
    public static void init(JFrame frame,int width,int height){
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(width, height);
        frame.setVisible(true);
    }}

2、仿照教材P335【例18.4】,将教材P330【例18.2】改造成两个线程(定义匿名内部类的方式),效果是上下两个图标分别按照不同的速度滚动。(20分)

3、调试教材P341【例18.8】火车站售票系统,体会多线程同时访问资源带来的冲突问题。并分别采用“同步块”和“同步方法”两种线程同步机制,改进原来的代码,即实现【例18.9】和【例18.10】。

package luhkel;

public class s3 implements Runnable {
    int c=10;
    public void run(){
        while(true){
            if(c>0){
                try{
                    Thread.sleep(100);
                    
                }
                catch(Exception e){
                    e.printStackTrace();
                }
                System.out.println("tickets"+c--);
            }
        }
    }

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
s3 t =new s3();
Thread tA= new  Thread(t);
Thread tB= new  Thread(t);
Thread tC= new  Thread(t);
Thread tD= new  Thread(t);
tA.start();
tB.start();
tC.start();
tD.start();


    }

}

 

posted on 2019-10-17 09:16  周橙梓  阅读(140)  评论(0编辑  收藏  举报

导航