欢迎您光临本小站。希望您在这里可以找到自己想要的信息。。。

张孝祥老师-java并发编程听课笔记(一)

java water 3072℃ 0评论

第一讲

 

线程不是什么时髦的技术。对自己的长远发展有好处

什么是线程

线程就是程序的一条执行线索

 

创建线程的传统方式有两种

 

//执行线索

Thread thread = new Thread(){

         @override

         public void run(){

                   while(true){

                            //获取线程的方法

                            try{

                                     Thread.sleep(500); //休息500毫秒

}

                            catch(InterruptedException  e){

                                     e.printStackTrace();

}

         System.out.println(Thread.currentThread().getName());

         System.out.println(this.getName);

}

}

};

thread.start();

//找代码运行,就是Thread里面的run()方法

创建Thread的子类。覆盖run()

 

 

Thread thread2 = new Thead(new Runnable(){

         @override

         public void run(){

                   while(true){

                            //获取线程的方法

                            try{

                                     Thread.sleep(500); //休息500毫秒

}

                            catch(InterruptedException  e){

                                     e.printStackTrace();

}

         System.out.println(Thread.currentThread().getName());

}

 

}

});

thread2.start();

 

创建线程的区别:

第二种更体现面向对象的思维Runnable,一个线程对象,一个是线程所运行代码对象。

 

思考:

new Thread(

         new Runnable(){

                   public void run(){

                   while(true){

                            //获取线程的方法

                            try{

                                     Thread.sleep(500); //休息500毫秒

}

                            catch(InterruptedException  e){

                                     e.printStackTrace();

}

         System.out.println(“runnable :” + Thread.currentThread().getName());

}

 

}

){

         public void run(){

                   while(true){

                            //获取线程的方法

                            try{

                                     Thread.sleep(500); //休息500毫秒

}

                            catch(InterruptedException  e){

                                     e.printStackTrace();

}

         System.out.println(“thread :” + Thread.currentThread().getName());

}

}

}.start();

执行那个run方法(执行第二个run方法)

用多线程会提高程序的执行效率么?

举例(一个桌子做馒头快还是多个桌子做馒头)

对线程下载快,是抢了服务器的带宽

 

第二讲

 

定时器(特别是做游戏的,每一秒钟移动到帧数产生动画)

 

public class TraditionalTimerTest{

         public static void main(String[] args){

                   new Timer().schedule(new TimeTask(){

                            @override

                            public void run(){

                                     System.out.println(“bombing!”);

}

}, 10000);

while(true){

         System.out.println(new Date().getSecondes());

         try{

                   Thread.sleep(1000);

}catch(InterruptedException e){

         e.printStackTrace();

}

}

}

}

把下面的while(true)去掉定时器也会执行

 

new Timer().schedule(timetask, 10000, 3000);第一次10秒后执行,然后每3秒执行

Timer定时器一个对象, TimerTask是执行任务对象

 

出一道题(第一次2秒,第二次4秒)交替执行怎么做

炸弹里面还有炸弹,定时器里面还有定时器

Class MyTimeTask extends TimerTask{

         @Override
         public void run() {

                   System.ount.println(“bombing”);

                   new Timer().schedule(new MyTimerTask(), 2000);

}

}

new Timer().scheduler(new MyTimerTack(), 2000);

两种方式(1.是用静态变量。2是创建两个炸弹)

内部类不能声明静态变量

Class MyTimeTask extends TimerTask{

         @Override
         public void run() {

                   count = (count + 1) %2;

                   System.ount.println(“bombing”);

                   new Timer().schedule(new MyTimerTask(), 2000 + 2000 * count);

}

}

new Timer().scheduler(new MyTimerTack(), 2000);

每天凌晨3点收邮件

开源的工具quartz(可以实现周一到周五执行,周六周天休息)

转载请注明:学时网 » 张孝祥老师-java并发编程听课笔记(一)

喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!