当前位置: 澳门新濠3559 > 操作系统 > 正文

例如在线程B中调用了线程A的Join()措施,该创建哪

时间:2019-12-21 19:57来源:操作系统
需要执行的语句如下: 一步一步学多线程-Timer,多线程-timer 在执行定时任务的时候可以用Timer来实现,现在小编对学到的进行一次总结,先来看一个demo 1 public class TimerTest { 2 3 public s

需要执行的语句如下:

一步一步学多线程-Timer,多线程-timer

  在执行定时任务的时候可以用Timer来实现,现在小编对学到的进行一次总结,先来看一个demo

 1 public class TimerTest {
 2 
 3     public static void main(String[] args) throws ParseException {
 4         Date date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2017-08-17 11:18:00");
 5         new Timer().schedule(new TimerTask() {
 6             @Override
 7             public void run() {
 8                 System.out.println(new Date().getSeconds()+"  执行");
 9             }
10         }, date);
11     }
12 }

  这段代码的意思是,先建一个Timer,Timer开始执行的时间是” 2017-08-17 11:18:00”。

发文单位:国家税务总局 国家外汇管理局

     在多线程中往往用到join()的方法,join()是什么呢?

selecta,min(b)b,cfromtablegroupbya,chavingcount(*)1

Timer重复执行

  上述代码Timer只会执行一次,如果我们想让定时任务每隔一段时间就执行呢?此时可以用Timer提供的schedule方法的另一个重载 public void schedule(TimerTask task, long delay, long period)。意思是Timer在delay的时候开始执行,每隔period时间长度执行一次。

 1 public class TimerTest {
 2 
 3     public static void main(String[] args) throws ParseException {
 4         Date date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2017-08-17 11:18:00");
 5         new Timer().schedule(new TimerTask() {
 6             @Override
 7             public void run() {
 8                 System.out.println(new Date().getSeconds()+"  执行");
 9             }
10         }, date,1000);
11     }
12 }

文  号:国税发[2002]107号

     Thread类的Join()措施能够将两个交替厉行的线程并合为次序厉行的线程。例如在线程B中调用了线程A的Join()措施,线程A将插入线程B之前,直到线程A厉行告终后,才会继续厉行线程B。

现在执行,遍历整个数据库效率极低。该创建哪个字段的索引才可以高效执行?

执行结果

  37  执行

  38  执行

  39  执行

  40  执行

  ……

发布日期:2002-8-15

    代码如下:

Timer执行延时

  在执行TimerTask的时候可能会出现线程执行时间过长的情况,超过了Timer的等待时间。此时会是什么情况呢?

  

 1 public class TimerTest {
 2 
 3     public static void main(String[] args) throws ParseException {
 4         Date date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2017-08-17 11:18:00");
 5         new Timer().schedule(new TimerTask() {
 6             @Override
 7             public void run() {
 8                 System.out.println(new Date().getSeconds()+"  开始执行");
 9                 try {
10                     Thread.sleep(2000);
11                     System.out.println(new Date().getSeconds()+"  执行结束");
12                 } catch (InterruptedException e) {
13                     e.printStackTrace();
14                 }
15             }
16         }, date,1000);
17     }
18 }

  附件一

   

看执行结果

  0  开始执行

  2  执行结束

  2  开始执行

  4  执行结束

  4  开始执行

  6  执行结束

  6  开始执行

  8  执行结束

  8  开始执行

  国际海运收入减免税情况一览表2002年7月

package com.cn.process;

public class test {

    /**
     * @param args
     */

   public class hello implements Runnable
    {

        @Override
        public void run() {
            // TODO Auto-generated method stub
             for (int i = 0; i < 3; i++) 
             { 
                                                          System.out.println(Thread.currentThread().getName()+i);            
             }

 }


    }

    public static void main(String[] args) throws InterruptedException {
        String threadName = Thread.currentThread().getName();    
        test test=new test();
        hello he=test.new hello();

        Thread demo = new Thread(he,"线程");//第二个参数是线程名称(自定义)           
        demo.start();//调用start方法但是调用该方法只是准备线程并不是马上启动
        demo.join(); //强制执行demo,只有当demo线程执行结束之后主线程才能继续当前主线程执行--相当于在主线程中添加了demo的子线程, 使异步执行线程转为同步执行
        //demo.start();//join()方法在start()前后显示的结果明显的不一样  可以证明只有当start()启动后 才能正确执行join() 
        for(int i=0;i<50;++i)
        {     
                    System.out.println(threadName +"线程执行-->"+i);           
                 }         
}

}  

scheduleAtFixedRate

  使用schedule方法执行Timer任务,如果开始的时间是在当前时间之前,Timer并不会对之前没有执行的任务进行补充执行。也就是延时之后,那么Timer就从当前时间开始接着按照间隔时间执行。但是有时候我们的需求更加关注的执行的频率,需要把因为延时而导致没有执行的任务补充回来,此时就需要用到scheduleAtFiexdRate。

 1 public class TimerTest {
 2 
 3     public static void main(String[] args) throws ParseException {
 4         final Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2017-08-17 11:52:00");
 5         new Timer().scheduleAtFixedRate(new TimerTask() {
 6             @Override
 7             public void run() {
 8                 System.out.println(date);
 9                 System.out.println(new Date().getSeconds() + "  开始执行");
10                 System.out.println("执行了");
11                 System.out.println(new Date().getSeconds() + "  执行结束");
12 
13             }
14         }, date, 10000);
15     }
16 }

序号 

  执行的结果是:

执行结果 

  39  开始执行

  执行了

  39  执行结束

  Thu Aug 17 11:52:00 CST 2017

  39  开始执行

  执行了

  39  执行结束

  Thu Aug 17 11:52:00 CST 2017

  40  开始执行

  执行了

  40  执行结束

 

  通过执行结果可以看出来,scheduleAtFixedRate上来就先将缺失的执行补上,然后再开始按照间隔时间一次一次执行。

协定国家(地区) 

线程0
线程1
线程2
main线程执行-->0
main线程执行-->1
main线程执行-->2
main线程执行-->3
main线程执行-->4
main线程执行-->5
main线程执行-->6
main线程执行-->7
main线程执行-->8
main线程执行-->9
main线程执行-->10
main线程执行-->11
main线程执行-->12
main线程执行-->13
main线程执行-->14
main线程执行-->15
main线程执行-->16
main线程执行-->17
main线程执行-->18
main线程执行-->19
main线程执行-->20
main线程执行-->21
main线程执行-->22
main线程执行-->23
main线程执行-->24
main线程执行-->25
main线程执行-->26
main线程执行-->27
main线程执行-->28
main线程执行-->29
main线程执行-->30
main线程执行-->31
main线程执行-->32
main线程执行-->33
main线程执行-->34
main线程执行-->35
main线程执行-->36
main线程执行-->37
main线程执行-->38
main线程执行-->39
main线程执行-->40
main线程执行-->41
main线程执行-->42
main线程执行-->43
main线程执行-->44
main线程执行-->45
main线程执行-->46
main线程执行-->47
main线程执行-->48
main线程执行-->49

将Timer设置成守护线程

 1 public class TimerTest {
 2 
 3     public static void main(String[] args) throws ParseException {
 4         final Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2017-08-17 11:52:00");
 5         Timer timer=new Timer();
 6         TimerTask timerTask= new TimerTask() {
 7             @Override
 8             public void run() {
 9                 System.out.println(date);
10                 System.out.println(new Date().getSeconds() + "  开始执行");
11                 System.out.println("执行了");
12                 System.out.println(new Date().getSeconds() + "  执行结束");
13 
14             }
15         };
16         timer.schedule(timerTask, date);
17     }
18 }

 

  在执行完代码之后,程序仍然在运行。看Timer.class的源代码可以发现Timer是创建了一个新的线程,而持续跟踪代码发现,新的线程进行了一个while(true)循环,再其中进入了等待状态。

1 public Timer(String name) {
2     thread.setName(name);
3     thread.start();
4 }

免税情况 

ok  成功  起到了join的作用!

解决办法

  将Timer设置成守护线程,Timer有个构造函数。

1 public Timer(boolean isDaemon) {
2     this("Timer-" + serialNumber(), isDaemon);
3 }

  所以我们在将new Timer()改为new Timer(true)即可。

法律依据 

当我注释掉前面的start()的时候,

TimerTask和Timer的cancel方法 

  TimerTask的cancel方法是关闭这个任务,Timer的cancel方法是关闭整个Timer。

  Timer的执行实际上是启动了一个线程然后,线程中维护了一个队列,然后把TimerTask放入队列中。TimerTask的cancel方法就是将自身从任务队列中移除。Timer的cancel方法,是将队列中的任务全部清空。

在执行定时任务的时候可以用Timer来实现,现在小编对学到的进行一次总结,先来看一个demo 1 public c...

执行情况 

以下是代码片段:

企业所得税 

//demo.start();//调用start方法但是调用该方法只是准备线程并不是马上启动
demo.join(); //强制执行demo,只有当demo线程执行结束之后主线程才能继续当前主线程执行--相当于在主线程中添加了demo的子线程, 使异步执行线程转为同步执行
 demo.start();//join()方法在start()前后显示的结果明显的不一样  可以证明只有当start()启动后 才能执行join() 也就是说 当join()在前面的话就失去了意义

营业税 

执行结果可能是(cpu有关):

税收协定 

线程0
main线程执行-->0
main线程执行-->1
main线程执行-->2
main线程执行-->3
main线程执行-->4
main线程执行-->5
main线程执行-->6
main线程执行-->7
main线程执行-->8
main线程执行-->9
线程1
线程2
main线程执行-->10
main线程执行-->11
main线程执行-->12
main线程执行-->13
main线程执行-->14
main线程执行-->15
main线程执行-->16
main线程执行-->17
main线程执行-->18
main线程执行-->19
main线程执行-->20
main线程执行-->21
main线程执行-->22
main线程执行-->23
main线程执行-->24
main线程执行-->25
main线程执行-->26
main线程执行-->27
main线程执行-->28
main线程执行-->29
main线程执行-->30
main线程执行-->31
main线程执行-->32
main线程执行-->33
main线程执行-->34
main线程执行-->35
main线程执行-->36
main线程执行-->37
main线程执行-->38
main线程执行-->39
main线程执行-->40
main线程执行-->41
main线程执行-->42
main线程执行-->43
main线程执行-->44
main线程执行-->45
main线程执行-->46
main线程执行-->47
main线程执行-->48
main线程执行-->49

海运协定 

这就可以看出了 join()先后顺序是否起作用了!

专项互免协定、 议定书或税收换文 

 

国内法 

税收协定 

海运协定等 

1 

日本 

免 

免 

第8条 

第8条 

海运免税协定 

 

执行 

执行 

2 

美国 

免 

免 

 

 

互免运输收入税收协定 

 

执行 

执行 

3 

法国 

免 

免 

 

 

税收换文 

 

执行 

执行 

4 

英国 

免 

免 

第8条 

 

 

(85)财税外186号 

执行 

执行 

5 

比利时 

免 

免 

第8条 

第8条 

 

 

执行 

执行 

6 

德国(联邦) 

免 

免 

第8条 

第8条 

 

 

执行 

执行 

7 

马来西亚 

免 

免 

第8条及议定书 

 

 

(88)财税协字009号 

执行 

执行 

8 

挪威 

免 

免 

第8条 

第8条 

 

 

执行 

执行 

9 

丹麦 

免 

免 

第8条 

第8条 

 

 

执行 

执行 

10 

新加坡 

免 

免 

第8条及议定书 

 

 

 

执行 

 

11 

芬兰 

免 

免 

第8条 

第9条 

 

 

执行 

执行 

12 

加拿大 

免 

 

第8条 

 

 

 

执行 

 

13 

瑞典 

免 

免 

第8条 

第9条 

 

 

执行 

执行 

14 

新西兰 

免 

 

第8条 

 

 

 

执行 

 

15 

泰国 

免 

免 

第8条 

 

补充议定书 

 

执行 

执行 

16 

意大利 

免 

 

第8条 

第9条 

 

 

执行 

执行 

17 

荷兰 

免 

免 

第8条 

第8条 

 

 

执行 

执行 

18 

原捷克 

免 

 

第8条 

 

 

 

执行 

 

19 

波 兰 

免 

免 

第8条 

 

税收换文 

 

执行 

执行 

20 

澳大利亚 

免 

 

第8条 

 

 

 

执行 

 

21 

保加利亚 

免 

免 

第8条 

第13条 

 

 

执行 

执行 

22 

巴基斯坦 

免 

免 

第8条 

第8条 

 

 

执行 

执行 

23 

科威特 

免 

 

第8条 

 

 

 

执行 

 

24 

瑞士 

免 

 

第8条 

 

 

 

执行 

 

25 

塞浦路斯 

免 

免 

第8条 

第5条 

 

 

执行 

执行 

26 

西班牙 

免 

 

第8条 

 

 

 

执行 

 

27 

罗马尼亚 

免 

免 

第8条 

第12条 

 

 

执行 

执行 

28 

奥地利 

免 

 

第8条 

 

 

 

执行 

 

29 

巴西 

免 

免 

第8条 

第11条 

 

 

执行 

执行 

30 

蒙 古 

免 

 

第8条 

 

 

 

执行 

 

31 

匈牙利 

免 

 

第8条 

 

 

 

执行 

 

32 

马耳他 

免 

免 

第8条 

第18条 

 

 

执行 

执行 

33 

卢森堡 

免 

免 

第8条 

比利时协定第8条 

 

 

执行 

执行 

34 

韩国 

免 

免 

第8条及议定书 

 

 

 

执行 

 

35 

俄罗斯 

免 

免 

第8条 

 

海运合作协定 

国税函发〔92〕1454号 

执行 

执行 

36 

克罗地亚 

免 

免 

第8条及议定书 

第16条 

 

 

执行 

执行 

37 

印度 

免 

免 

第8条及议定书 

 

 

 

执行 

 

38 

毛里求斯 

免 

 

第8条 

 

 

 

执行 

 

39 

白俄罗斯 

免 

 

第8条 

 

 

 

执行 

 

40 

斯洛文尼亚 

免 

 

第8条 

 

 

 

执行 

 

41 

以色列 

免 

 

第8条 

 

 

 

执行 

 

42 

越南 

免 

免 

第8条 

第8第 

 

 

执行 

执行 

43 

土耳其 

免 

 

第8条 

 

 

 

执行 

 

44 

乌克兰 

免 

免 

第8条 

第8条 

 

 

执行 

执行 

45 

亚美尼亚 

免 

 

第8条 

 

 

 

执行 

 

46 

牙买加 

免 

 

第8条 

 

 

 

执行 

 

47 

冰岛 

免 

 

第8条 

 

 

 

执行 

 

48 

立陶宛 

免 

 

第8条 

 

 

 

执行 

 

49 

拉脱维亚 

免 

 

第8条 

 

 

 

执行 

 

50 

乌兹别克 

免 

 

第8条 

 

 

 

执行 

 

51 

南斯拉夫 

免 

免 

第8条 

 

互免海运收入税收协定 

 

执行 

执行 

52 

苏丹 

免 

 

第8条 

 

 

 

执行 

 

53 

马其顿 

免 

 

第8条 

 

 

 

执行 

 

54 

埃及 

免 

 

第8条 

 

 

 

执行 

 

55 

葡萄牙 

免 

 

第8条 

 

 

 

执行 

 

56 

爱沙尼亚 

免 

 

第8条 

 

 

 

执行 

 

57 

老挝 

免 

免 

第8条 

 

河运协定 

 

执行 

执行 

58 

菲律宾 

免 

 

第8条 

 

 

 

执行 

 

59 

爱尔兰 

免 

 

第8条 

 

 

 

执行 

 

60 

南非 

免 

 

第8条 

 

 

 

执行 

 

61 

摩尔多瓦 

免 

 

第8条 

 

 

 

执行 

 

62 

巴巴多斯 

免 

 

第8条 

 

 

 

执行 

 

63 

孟加拉 

减半 

 

第8条 

 

 

 

执行 

 

64 

赛舌尔 

免 

 

第8条 

 

 

 

执行 

 

65 

阿曼 

免 

 

第8条 

 

 

 

03年1月1日 

 

66 

巴林 

免 

 

第8条 

 

 

 

03年1月1日 

 

67 

希腊 

免 

免 

第8条 

第18条 

 

 

未 

执行 

68 

尼泊尔 

免 

 

第8条 

 

 

 

未 

 

69 

吉尔吉斯 

免 

 

第8条 

 

 

 

未 

 

70 

印度尼西亚 

减半 

 

第8条 

 

 

 

未 

 

71 

委内瑞拉 

免 

 

第8条 

 

 

 

未 

 

72 

巴布亚新几内亚 

 

 

第8条 

 

 

 

未 

 

73 

卡塔尔 

免 

 

第8条 

 

 

 

未 

澳门新濠3559, 

74 

哈萨克斯坦 

免 

 

第8条 

 

 

 

未 

 

75 

尼日利亚 

免 

 

第8条 

 

 

 

未 

 

76 

伊朗 

免 

 

第8条 

 

 

 

未 

 

77 

阿联酋 

免 

 

第8条 

 

 

 

未 

 

78 

古巴 

免 

免 

第8条 

 

政府贸易协定 

 

未 

执行 

79 

突尼斯 

免 

 

 

 

 

 

未 

 

80 

香港 

免 

免 

《安排》第2条 

 

 

 

执行 

 

81 

朝鲜 

免 

免 

 

14条 

 

(74)财税字第55号 

 

执行 

82 

斯里兰卡 

免 

免 

 

 

互免税收换文 

 

 

执行 

83 

阿尔巴尼亚 

免 

免 

 

通商航海条约 

 

(74)财税字第55号 

 

执行 

84 

格鲁吉亚 

免 

免 

 

第9条 

 

 

 

执行 

85 

阿根廷 

免 

免 

 

 

互免税收换文 

 

 

执行 

86 

智 利 

免 

免 

 

 

互免税收换文 

(84)财税外字第181号 

 

执行 

87 

阿尔及利亚 

免 

免 

 

通商航海条约 

 

(76)财税字第191号 

 

执行 

88 

黎巴嫩 

免 

 

 

第13条 

 

 

 

执行 

89 

缅甸 

免 

免 

 

 

 

河运协定 

 

执行 

90 

摩洛哥 

免 

免 

 

第10条 

 

 

 

执行 

91 

墨西哥 

 

 

 

 

 

 

 

执行 

92 

刚国共和国 

 

 

 

 

 

 

 

执行 

93 

扎伊尔(刚国人民民主共和国) 

 

 

 

 

执行 

94 

加纳 

 

 

 

 

 

 

 

执行 

95 

秘鲁 

 

 

 

 

 

 

 

执行 

  注:未到执行日期或未执行的税收协定,总局将在其开始执行前通知各地。

编辑:操作系统 本文来源:例如在线程B中调用了线程A的Join()措施,该创建哪

关键词: