java 多线程学习

来源:互联网 发布:软件项目管理课程设计 编辑:程序博客网 时间:2024/06/02 01:57

问题叙述:我在csdn提过一个问题:http://bbs.csdn.net/topics/392283253#new_post

                  现在我明白其实根本不用解释相同为什么结果是我帖子中图片所呈现的输出,我只需要明白,线程不安全所导致!那么如何解决线程不安全:

                          方法一:同步代码块

                          方法二:同步方法(即将同步代码块放到一个用synchronized修饰的方法中)

                按照上述良好总方法对连接中的问题进行修改!!

               方法一:

public class T extends JFrame {
@Test
public void do_button2_actionPerformed() {
      final StringBuilder sb = new StringBuilder();
        for ( int i=0 ; i < 5; i++) {
            new Thread() {
                public void run() {
                synchronized(""){
                   sb.append("《Java编程词典》");      
                   System.out.print(sb.toString());
                   System.out.println(" ");
                }
                };
            }.start();
        }
    }
}

               方法二:

public class T extends JFrame {
StringBuilder sb;
@Test
public void do_button2_actionPerformed() {
      sb = new StringBuilder();
        for ( int i=0 ; i < 5; i++) {
            new Thread() {
                public void run() {
                doit();
                };
            }.start();
        }
    }
synchronized void doit(){
sb.append("《Java编程词典》");      
         System.out.print(sb.toString());
         System.out.println(" ");
}
}

两种方法输出结果(线程按照;理想状态输出):

原创粉丝点击