java初学

来源:互联网 发布:seo关键词挖掘 编辑:程序博客网 时间:2024/05/02 12:45

最近学了一点java,悔不当初啊。大学都上完了,才开始学java。疑惑之处:创建线程有两种方法:1是集成 Thread(),2是实现Runnable接口。都要重写run()方法。

public class TestDeadLock implements Runnable {public int flag = 1;static Object o1 = new Object(), o2 = new Object();public void run() {System.out.println("flag=" + flag);if(flag == 1) {synchronized(o1) {try {Thread.sleep(500);} catch (Exception e) {e.printStackTrace();}synchronized(o2) {System.out.println("1");}}}if(flag == 0) {synchronized(o2) {try {Thread.sleep(500);} catch (Exception e) {e.printStackTrace();}synchronized(o1) {System.out.println("0");}}}}public static void main(String[] args) {TestDeadLock td1 = new TestDeadLock();TestDeadLock td2 = new TestDeadLock();td1.flag = 1;td2.flag = 0;Thread t1 = new Thread(td1);Thread t2 = new Thread(td2);t1.start();t2.start();}}

td1是基于TestDeadLock类创建的对象的引用。存在于栈内存里,指向堆内存的对象。

Thread t1=new Thread(td1);这里我没有理解很清楚。t1是个线程,也就是一个运行的过程,执行的是run()方法。/×以后理解正确率在修改。疑惑之处。




11章错误记录

先上程序


import java.awt.*;import java.awt.event.*;public class TFMath{public static void main(String[] args){//TFFrame tf=new TFFrame();//tf.launchFrame(); new TFFrame().launchFrame();}}class TFFrame extends Frame{TextField num1,num2,num3;public void launchFrame(){/* TextField*/num1=new TextField(10);/* TextField*/num2=new TextField(10);/* TextField*/num3=new TextField(15);Label lbPlus=new Label("+");Button btnEqual=new Button("=");btnEqual.addActionListener(new MyMonitor(this));setLayout(new FlowLayout());add(num1);add(lbPlus);add(num2);add(btnEqual);add(num3);pack();setVisible(true);}} class MyMonitor implements ActionListener{TFFrame tf=null;public MyMonitor(TFFrame tf){this.tf=tf;}public void actionPerformed(ActionEvent e){int n1=Integer.parseInt(tf.num1.getText());int n2=Integer.parseInt(tf.num2.getText());tf.num3.setText(""+(n1+n2));}}


注意18 19  20行已经声明为成员变量。如果再次声明,编译不会出错,运行时候就会出错。



原创粉丝点击